Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

Script Geek 2.0が公開される

Posted on 10月 22, 2019 by Takaaki Naganoya

Shane Stanleyのフリーソフトウェア「Script Geek」の新バージョンv2.0が公開されました。

→ Script Geek 2.0ダウンロードページ


▲Dark ModeにするとAbout画面の文字が見えない。うん、これ自分も気をつけよう(^ー^;

前バージョンからの相違点は、Dark Modeへの対応などですが、大幅に変わったりはしていません。2つのAppleScriptの処理時間を計測するというものです。

本ツールは利用頻度も高く、実際にScriptを書いている最中によく走らせています。

Cocoaの機能を呼び出す場合には、処理対象のデータ数によっては従来のAppleScriptによる処理よりも遅くなることがあるので、「本当にCocoaで処理させたほうが高速か?」ということをいちいち確認しておく必要があります。

ほんの数個の要素からなる配列のソートにCocoaの機能を使うと逆に遅くなりますし、数万要素の配列からの条件抽出にCocoaの機能を使わないと損です。

つまり、AppleScriptからのCocoaの利用については、速度的なメリットがない場合には使わないほうがいいという点が「真髄」といいますか、その一番大事なところであって、本ツールの存在・利用そのものがShane Stanleyのノウハウそのものなんですね。

ついでに、身の回りのマシンで同じ処理のベンチマークをScript Geek 2.0を用いて行ないました。処理内容は、おおよそCocoaの機能を使わないほうが速そうな、小さなデータの判定処理です。

Machine MacBookPro10,1 MacBookPro9,1 MacBookAir4,1 Macmini7,1
メインマシン。10.14以上に上げない環境 Beta版OS専用 持ち歩き用。検証環境 検証環境
CPU Core i7 2.6GHz Core i7 2.7GHz Core i5 1.6GHz Core i5 2.6GHz
CPU Core 4.0 4.0 2.0 2.0
RAM 8GB 8GB 4GB 16GB
OS 10.14.6 10.15.1beta 10.13.6 10.15
Storage SSD HDD SSD Fusion Drive
1st Script 0.115 0.138 0.182 0.086
2nd Script 0.608 14.179 1.589 13.798

以前に、花文字作成Scriptでメイン環境のMacBook Pro Retina 2012が、最近加入した検証用マシンMac mini 2014の10倍以上高速だったことがあって、しかもデータ的にはメモリ上で十分に終わってしまいそうな内容であったために、その理由がわからないままでした。

そこで、こうして手元のマシンをすべてかき集めて、Script Geekでベンチマークを行なった次第です。

その結果、

 (1)HDD搭載マシンがSSD搭載マシンの10倍程度の処理時間になっている。メモリ搭載量とか関係なくHDD搭載機だと遅い。Fusion Driveでも同様
 (2)コア数は少ないよりも多いほうがよいが、デュアルコア程度だとCocoaの機能を利用するのに不利。最低でもクアッドコアは必要
 (3)メモリは少ないよりも多いほうがよいが、それよりもブートドライブがSSDであること、CPUコア数が4コア以上であることが重要

といったことがわかりました。SSD搭載機でないマシンというのは現行のラインナップの中にも少なくなっていますが、HDD搭載のMac miniというのはプログラムの実行専用の機械としては割とありふれていますし、Fusion Drive搭載のiMacも同様でしょう。これらHDD搭載機だと場合によってはかるーく10倍ぐらい遅くなるということに留意すべきでしょう。

もちろん、ファイルI/Oを多用するScriptについてはSSDや、場合によってはRAM Diskを使うことが望ましいわけで、これぐらい処理データが小さいプログラムでも顕著な差が見られたことがポイントです。

AppleScriptで実際の処理を行なってみると、最新のマシンだからといって速くなっていないというか、むしろそんなに速くないとか、最上位機種のはずのiMac Proでも処理内容によっては2012年のMacBook Proの方が高速だったりと(これにはおどろいた)、機械ごとに得手・不得手があるというか、性能差というものが値段や年式に単純に比例しているわけではないことを痛感するものです(2013年以降、2018年ぐらいまでIntel CPUの製造プロセスは変わってないし、2018年ぐらいまでIPCが大幅に改善されたという話も聞きません)。

開発機としてしばらくMacBook Pro 13インチの2017年モデルを使っていましたが、正直MacBook Pro Retina 2012と比べてCPU自体の処理性能は同じか、むしろ遅いぐらいでした(バッテリーはアホみたいにもちましたが)。

ただ、メインメモリ8GBだとAdobeのCreative Cloudアプリケーションで足切りが行われており(最低16GB、実用上は32GBあたり?)、そろそろメイン環境は交代したいところです。

AppleScript名:script1
set aStr to "1111"
set aRes1 to chkEachDigitIsNotSameChar(aStr as string) of me
–> false

set aStr to "1234"
set aRes1 to chkEachDigitIsNotSameChar(aStr as string) of me
–> true

on chkEachDigitIsNotSameChar(aStr as string)
  set aLen to length of aStr
  
set aList to characters of aStr
  
  
set bList to {}
  
repeat with i in aList
    set j to contents of i
    
if j is not in bList then
      set the end of bList to j
    else
      return false
    end if
  end repeat
  
return true
end chkEachDigitIsNotSameChar

★Click Here to Open This Script 

AppleScript名:script2
— Created 2017-12-17 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set aStr to "1111"
set aRes1 to chkEachDigitIsNotSameChar(aStr as string) of me
–> false

set aStr to "1234"
set aRes1 to chkEachDigitIsNotSameChar(aStr as string) of me
–> true

on chkEachDigitIsNotSameChar(aStr as string)
  set aList to characters of aStr
  
set aLen to length of aList
  
  
set aSet to current application’s NSCountedSet’s alloc()’s initWithArray:aList
  
set bList to (aSet’s allObjects()) as list
  
set bLen to length of bList
  
  
return (aLen = bLen)
end chkEachDigitIsNotSameChar

★Click Here to Open This Script 

More from my site

  • 丸つき数字を数値にデコードする v2丸つき数字を数値にデコードする v2
  • common elements Libをロシア語などのクエリーで呼び出すcommon elements Libをロシア語などのクエリーで呼び出す
  • Wikipedia経由で2つの単語の共通要素を計算するcommon elements Lib Script LibraryWikipedia経由で2つの単語の共通要素を計算するcommon elements Lib Script Library
  • 自然言語テキストから複数の日付情報を抽出自然言語テキストから複数の日付情報を抽出
  • BlogアーカイブのMarkdown書類をリネーム。親、親+1階層フォルダをMM, YYYYとみなして反映BlogアーカイブのMarkdown書類をリネーム。親、親+1階層フォルダをMM, YYYYとみなして反映
  • Numbersで各シート名称を置換Numbersで各シート名称を置換
(Visited 63 times, 1 visits today)
Posted in Tools | Tagged 10.12savvy 10.13savvy 10.14savvy 10.15savvy Script Geek | Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • macOS 13, Ventura(継続更新)
  • アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v3
  • UI Browserがgithub上でソース公開され、オープンソースに
  • Xcode 14.2でAppleScript App Templateを復活させる
  • macOS 13 TTS Voice環境に変更
  • 2022年に書いた価値あるAppleScript
  • ChatGPTで文章のベクトル化(Embedding)
  • 新発売:AppleScriptからSiriを呼び出そう!
  • iWork 12.2がリリースされた
  • 従来と異なるmacOS 13の性格?
  • 新発売:CotEditor Scripting Book with AppleScript
  • macOS 13対応アップデート:AppleScript実践的テクニック集(1)GUI Scripting
  • AS関連データの取り扱いを容易にする(はずの)privateDataTypeLib
  • macOS 12.5.1、11.6.8でFinderのselectionでスクリーンショット画像をopenできない問題
  • macOS 13でNSNotFoundバグふたたび
  • ChatGPTでchatに対する応答文を取得
  • 新発売:iWork Scripting Book with AppleScript
  • Finderの隠し命令openVirtualLocationが発見される
  • macOS 13.1アップデートでスクリプトエディタの挙動がようやくまともに
  • あのコン過去ログビューワー(暫定版)

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1390) 10.14savvy (586) 10.15savvy (434) 11.0savvy (277) 12.0savvy (185) 13.0savvy (55) CotEditor (60) Finder (47) iTunes (19) Keynote (98) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (41) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (56) Pages (37) Safari (41) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKUserScriptInjectionTimeAtDocumentEnd (18) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC