应用程序的 M1 mac 优化过程是什么意思?
What does M1 mac optimization process for an application mean?
您知道现代 mac 计算机中使用的基于 ARM 的 M1 芯片。在那些 mac 上,一些软件是 运行 通过称为 Rosetta
(Discord、Steam)的层,一些是本地的,直接通过 M1
(Slack、IntelliJ)和有些实际上无法以任何一种方式工作(Virtual Box)。可以找到包含状态的巨大列表 here。
只有Rosetta
可以运行的应用还没有M1
优化,他们的开发者必须优化它,这需要一些时间。但是优化它意味着什么?这个过程是什么样的?我很确定他们不会将整个应用程序代码重写为另一种语言(如 Swift),因为 Jetbrains 能够非常快速地 M1
优化他们的应用程序。另一方面,Discord 尚未优化,Unity 游戏引擎也是如此(虽然它处于测试阶段)。
在底部,它只是意味着编译器的后端被配置为为程序发出 ARM64 指令,而不是(或除此之外)x86-64 指令。
这意味着不能再使用某些特定于 x86-64 的功能指令,除非使用等效的 ARM 指令。
但这通常不是什么大问题,因为大多数 macOS 软件通常是使用系统提供的框架在更高的抽象级别上编写的。
例如,使用 CoreImage 处理图像可以使您从 CPU 和 GPU 的细节中抽象出来。在这种情况下,Apple 会在其框架上进行繁重的移植工作。作为应用程序开发人员,您所要做的就是选中“target ARM64”框。
您知道现代 mac 计算机中使用的基于 ARM 的 M1 芯片。在那些 mac 上,一些软件是 运行 通过称为 Rosetta
(Discord、Steam)的层,一些是本地的,直接通过 M1
(Slack、IntelliJ)和有些实际上无法以任何一种方式工作(Virtual Box)。可以找到包含状态的巨大列表 here。
只有Rosetta
可以运行的应用还没有M1
优化,他们的开发者必须优化它,这需要一些时间。但是优化它意味着什么?这个过程是什么样的?我很确定他们不会将整个应用程序代码重写为另一种语言(如 Swift),因为 Jetbrains 能够非常快速地 M1
优化他们的应用程序。另一方面,Discord 尚未优化,Unity 游戏引擎也是如此(虽然它处于测试阶段)。
在底部,它只是意味着编译器的后端被配置为为程序发出 ARM64 指令,而不是(或除此之外)x86-64 指令。
这意味着不能再使用某些特定于 x86-64 的功能指令,除非使用等效的 ARM 指令。
但这通常不是什么大问题,因为大多数 macOS 软件通常是使用系统提供的框架在更高的抽象级别上编写的。
例如,使用 CoreImage 处理图像可以使您从 CPU 和 GPU 的细节中抽象出来。在这种情况下,Apple 会在其框架上进行繁重的移植工作。作为应用程序开发人员,您所要做的就是选中“target ARM64”框。