我对计算机处理器与进程工作的关系的理解仍然有点模糊。具体来说,我计划购买一台新电脑,最终希望获得 Angular Typescript 环境的最快编译时间(考虑到 Mac)。
最终我希望弄清楚两件事,
获取更多 CPU 核心是否会增加我的编译过程的代码编译速度?(或者内核是否会将额外的计算能力分配给不受关注的其他后台进程)
如果上述情况属实,那么它是自动的吗?还是需要传递一些低级选项才能实现这一点?作为参考,我依赖于TS加载器(来自 javascript Webpack)来编译我的代码。
如果它不像上述两个那么简单,我希望我能得到关于重要因素的列出的答案。
到目前为止,我了解到要编译我的 typescript 代码,将创建一个 Node.js env 进程来编译我的代码。
input files Process Output
.ts -> (Webpack -> TSLoader) -> .js
(Node:JIT of Webpack.js to Machine Code)
(Kernel notices window is in focus?? and prioritizes??)
(sends to one or multiple cores??? Hazyness... ???)
(????)
答案1
单个进程是否可以使用多个核心完全取决于其编码方式。如果已将其工作分解为多个可并行部分并将每个部分分配给单独的线程,则操作系统可以为这些不同的线程使用不同的 CPU 核心。
另一方面,如果进程没有被编码为专门使用多个线程,每个线程都可以独立运行(无需等待其他线程的结果),那么操作系统实际上无法为该进程使用多个内核。其他内核将用于系统中的其他操作(其他应用程序、后台服务等),但不会用于您的主应用程序。编译单个文件在多个内核上无法高度并行化。
但是,如果你正在查看涉及许多文件的项目编译,那么使用多个核心的更可能的方式是使用具有此功能的构建工具(Microsoft 称之为构建编排工具)分别并行编译多个文件。下面是小型讨论关于该主题。