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

iMac Proを試してみた

Posted on 7月 12, 2019 by Takaaki Naganoya

開発のために期間限定で手元にiMac Proが来ています。すぐに返却するので、じっくりした評価は行えませんが(評価目的ではないので)、ためしにAppleScriptによる大きめの処理を試してみました。

マシン1:MacBook Pro 2012 Retina Core i7 2.6GHz 4core RAM 8GB
マシン2:iMac Pro 2017 Xeon 3.2GHz 8 core RAM 32GB

(1)700箇所の位置情報から最寄りの駅検索

アーケードゲーム「戦場の絆」が導入されている2015年の時点の約700箇所の日本全国のゲームセンターについて、最寄りの鉄道駅(約8,000箇所)との距離を求め最短のものを最寄駅とし、それぞれ最寄駅までの距離が短い順にソートするという、GUIアプリケーションに依存しない処理です。CoreLocationの機能を用いて距離計算を行います。

もともと90分かかっていたところを隣接都道府県テーブルの導入により10分へ短縮、そしてデータの形式を見直すことで5分程度に処理短縮していたものですが、実験したバージョンでは詳細な分析のために扱う情報を増やしており、マシン1で7分程度かかります。

 マシン1:7分13秒
 マシン2:4分17秒

CPUの動作クロック1.2倍にもかかわらず演算時間6割ということで、Xeonの性能の高さが見て取れました。扱うデータも割と巨大ですが、メモリ容量の大きさにより良好な結果が得られていることが伺われます。

(2)指定のAppleScript書類のコメント部分のみ除去して返す

245行のAppleScript書類を構文書式設定をもとに解釈し、構文色分け情報をもとにコメント部分のみ除去する処理です。つい最近まで、テストデータに対して十数秒かかっていたのですが、「カラーキャッシュ」という機構により大幅な高速化を遂げてしまったものです。

 マシン1:1.55秒
 マシン2:1.07秒

こちらも、想定以上の速度を叩き出せています。

(3)指定の文字列の順列組み合わせ計算(Permutations)

{“G”, “C”, “T”, “A”} などの文字列リスト(配列)の順列組み合わせ総当たり計算(Permutations)を行うものです。Cocoaの機能を用いて、メモリ上で大量のデータを処理するため、演算性能以上にメモリアクセス速度や容量(要素数が増えると8GBだとつらいもよう)の制約が少ないことが効いてきそうです。

・8要素時
 マシン1:107.27秒
 マシン2:64.83秒

これは、素直に速いといえる感じです。

(4)実践的なデータ照合

Adobe Illustratorの書類からピックアップしたテキストフレームのデータと元のCSVデータの比較を行います。単なるテキスト比較とバカにしてはいけません。元CSVデータとの照合を行うために、ゆらぎ吸収用の外部データ(同一視する表記を列挙)の内容を反映して、考えられるありとあらゆるパターンでチェックを行います。

Illustratorからテキスト抽出する際には、グループ化されたアイテムはリストとして取り出し、照合時にこのグループ化されていたデータは順列組み合わせ(Permutations)計算により、元データとの照合を行います(6つのテキストフレームがグループ化されている場合には、6x5x4x3x2x1=720パターンと200項目程度のCSVデータ項目との照合を行うため、(1項目あたり)14万回ぐらい比較を行います。実際のAppleScriptによる処理に近い、たいへん実践的な処理内容です。

 マシン1:10.69秒
 マシン2:6.25秒

ちなみに、MacBook Pro (13-inch, 2017 Two Thunderbolt 3 Ports RAM 16GB。macOS 10.14.5)だと、10秒強程度かかります。2012年から5年後のマシンがこんなに遅い(速くなっていない)とは思ってもみませんでした(^ー^;;

最近では、照合するデータを文字の集合としてとらえ、どれだけ集合同士が近似しているかとか、照合データを形態素解析してさらに類似している単語に展開し、展開したデータ同士の類似度を計算するといった意味類似度ベース/確率計算ベースの照合も行っています。こうした処理にもCPUパワー、とくにシングルスレッドの処理の速さが必要です。

マシン強化はプログラムの高速化手段のひとつ

高価で高速なマシンを使うというのはひとつの解決策ですが、では実際に高価なマシンを使うとどの程度の速度向上を期待できるのか、というのはこれまで実測したことがありませんでした。iMac Proは(Mac Pro不在の)現時点では最高峰のマシンであり、現時点でこれより高速なMacは存在していません(より高速なCPUは市場に存在しているので、そこが悩ましい。たしかに自分で組みたくなる)。

# 2019年のCore i9 5K iMacはiMac Proよりシングルスレッド性能で見ると上かも

ここにあげた処理は、CPUのシングルスレッドの演算能力に大きく依存するような処理であり、そのままではなかなか性能を上げにくいものでもあります。実際に調べてみると動作クロック比率以上の性能向上を見せており、感心させられました。

ただし、コストパフォーマンスの面からいえば20万円前後のマシンに対して(しかもノート)、50万円以上するデスクトップ機がこの程度ということで、

 「高いマシンを買ったからといって価格に見合った演算性能を得られるわけではない」

ということを再確認したにとどまりました(MacBook Pro Retina 2012優秀すぎ。2017年のMacBook Pro 13インチの安い方より高速だし)。より低価格なiMacと異なり、購入後にあとからメモリを増設できないとか(仕様)。2017年に登場して以来アップデートされていないとか。Mac Pro 2019(Cheese Grater)が出てくるまでの「つなぎ」なんでしょう。

もちろん、安定性と快適さ、静粛性はくらべものにならないほどiMac Proが「上」です。外部ディスプレイを3台接続したときにマシン1では放熱ファンが回りまくり、外部冷却ファンを回さないと速度低下するケースも見られるためです(CPUのグリス塗り直しが必要か?)。また、アプリケーションの起動もきわめて高速です。

とくに、1,000行を超えるような巨大なAppleScriptの編集中にはScript Debuggerの応答速度が極端に下がります(カーソル移動に秒単位でかかるとか)。iMac Pro使用時にはこの極端な速度低下を避けられたので、これだけでも効果がありました。

もしも、バッチ処理速度の向上だけを目的として新規マシンの導入を行うのであれば、Mac miniを数台導入して分散処理したほうが得策です。これだと、GUIベースのアプリケーションを操作するAppleScriptのプログラムを、ほぼ何も書き換えずとも良好な結果が得られます。Parallelsなどの仮想環境にゲストOSとしてmacOSをインストールし、これらの環境との間で分散処理してもよいでしょう(こちらはぜんぜん実験していませんけれども)。

また、処理内容がIllustratorやInDesignなどのGUIベースのアプリケーションを用いていない場合には、プログラムを書き換えて並列処理するよう変更してもよいでしょう。

腰をすえてじっくり使う機会があれば、iMac Proのような強力で多コアなデスクトップマシン上で並列処理によりどの程度処理時間を短縮できるのか試してみたいところです。

More from my site

  • 自分のウィンドウのフルスクリーン化 v2自分のウィンドウのフルスクリーン化 v2
  • ACで動いているかDCで動いているかを取得するACで動いているかDCで動いているかを取得する
  • 画像にToonFilterを実行してデスクトップにPNG形式で保存画像にToonFilterを実行してデスクトップにPNG形式で保存
  • イベント「macOS Native」でAppleScriptの説明をイベント「macOS Native」でAppleScriptの説明を
  • YouTubeムービーの状態を取得、操作YouTubeムービーの状態を取得、操作
  • えせScriptable AppえせScriptable App
(Visited 125 times, 1 visits today)
Posted in How To | 2 Comments

2 thoughts on “<span>iMac Proを試してみた</span>”

  1. 6/12/21
    4:31 PM
    2021年6月12日
    4:31 PM

    Reply

    M1 Mac mini – AppleScriptの穴 says:

    […] 以前に開発用にiMac Proを一時的に預かっていたときにすこしだけ自作ベンチマークをとってみましたが、あれよりも突っ込んだ内容は実験できることでしょう。 […]

  2. 8/18/21
    4:02 PM
    2021年8月18日
    4:02 PM

    Reply

    macOS 12 beta5でAppleScript処理系の大幅なスピードアップ。M1もIntelも – AppleScriptの穴 says:

    […] と、iMac Proを大きく上回る結果を叩き出しています。 […]

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

  • アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v3
  • Xcode 14.2でAppleScript App Templateを復活させる
  • ChatGPTで文章のベクトル化(Embedding)
  • ChatGPTでchatに対する応答文を取得
  • macOS 14, Sonoma
  • Dockアイコンにプログレスバーを追加 v3
  • 画像をExcelのワークシート上に配置
  • 指定画像をbase64エンコード文字列に変換→デコード
  • 出るか?「AppleScript最新リファレンス」のバージョン2.8対応版
  • 指定のアプリケーションの実行アーキテクチャを変更
  • macOS 14の変更がmacOS 13にも反映
  • 与えられた文字列の1D Listのすべての順列組み合わせパターン文字列を返す v3(ベンチマーク用)
  • 新刊発売 AppleScript最新リファレンス v2.8対応
  • 当分、macOS 14へのアップデートを見送ります
  • Cocoa-AppleScript Appletランタイムが動かない?
  • AppleScriptによるWebブラウザ自動操縦ガイドをmacOS 13対応アップデート
  • Claris FileMaker 2023がリリースされる
  • 新発売:AppleScript基礎テクニック集(29)セキュリティ機能解除
  • macOS 13の複合的な不具合。とくにPDF書き出しについて
  • ディスプレイをスリープ状態にして処理続行

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1390) 10.14savvy (586) 10.15savvy (434) 11.0savvy (278) 12.0savvy (190) 13.0savvy (77) 14.0savvy (20) CotEditor (61) Finder (48) iTunes (19) Keynote (100) 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 (57) Pages (39) Safari (41) Script Editor (22) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • 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)
  • 未分類

アーカイブ

  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 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