我正在开发一个应用程序,它可能需要按顺序运行许多applescripts,并且我正在寻找任何方法来更快地运行applescripts。我说的不是内部结构,而是执行启动/清理。
示例:
onePlusOne.applescript:
1+1然后我用osacompile -o onePlusOne.scpt onePlusOne.applescript编译了这个
现在,测试(在bash shell中):
time zsh -c "(( val = 1 + 1 ))"
real 0m0.013s
user 0m0.004s
sys 0m0.007stime osascript onePlusOne.scpt
real 0m0.054s
user 0m0.026s
sys 0m0.022s我想知道是否可以对额外的开销做些什么,以便更快地执行applescripts。
发布于 2022-01-10 07:53:20
你不会说什么类型的应用程序,什么类型的AppleScripts,或者脚本是应用程序的一部分,还是用户提供的。您也不需要说明您是否已经构建了一个原型并发现了实际的性能问题,或者此时您正在谈论纯粹的假设。
假设一个典型的沙箱化Swift/ObjC桌面应用程序:
NSUserAppleScriptTask,因为它在应用程序的沙箱之外运行脚本。一个很大的限制是:它的子进程不是持久的,所以您不能加载一个脚本并多次调用它的处理程序;每次都必须创建一个新的子进程,如果您想在调用之间保留脚本的状态,那么您必须自己安排一些事情。NSAppleScript/OSAScript运行脚本是一种选择,这些脚本允许您加载一次脚本并多次调用它。否则,间接费用就是间接费用,通常你对它们无能为力。TBH,您的普通AppleScript将花费更多的时间等待IO (AppleScript功能强大但速度慢)或遍历病理算法(例如,迭代列表通常是O(n²),因为AS的内部结构很糟糕,而且大多数AppleScripters都是业余的,因此会编写效率低下的代码)。可能有一些方法可以改善糟糕的运行时性能,但这是一个更大的讨论。
最后一个考虑:基于AppleScript的自动化,“它快速吗?”是不是比“用手完成同样的任务更快”更重要?即使是一个慢速的AppleScript也会比一个快速的人快10-100倍。
https://stackoverflow.com/questions/70647124
复制相似问题