首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ocaml并行构建

Ocaml并行构建
EN

Stack Overflow用户
提问于 2016-12-03 16:21:44
回答 1查看 100关注 0票数 0

假设我想构建一个并行编译Ocaml源代码的程序。实际上,我现在想知道如何使用Ocaml来实现这一点。那么,考虑到目前Ocaml的现状,我该如何并行化我的程序部分呢?

我应该只使用Unix模块生成新的进程吗?在并行编译的情况下,这是否有任何开销/性能影响?

EN

回答 1

Stack Overflow用户

发布于 2018-04-17 18:42:46

要编译文件,必须运行ocaml编译器,每个文件一个。因此,是的,您必须启动新的进程,而Unix模块具有实现这一点的必要功能。

至于开销或性能影响,请考虑以下内容:

1)您需要为每个编译的文件启动一个进程。无论是顺序执行还是并行执行,启动的进程数都保持不变。

2)即使考虑并行编译,编译一个文件也要比启动每次编译所需的记账时间长。

因此,您是否担心并行启动和跟踪多个编译器进程的开销?不要这样。这还不到你时间的0.1%。另一方面,通过运行2个编译器来使用2个cpu核心,基本上会使您的速度翻倍。

或者,您是否担心多个编译器并行运行?您需要两倍的ram,并且在大多数现代cpus上,缓存是共享的,因此缓存性能在一定程度上也会受到影响。但是,除非您使用的是完全内存不足的嵌入式系统,否则这不会成为问题。因此,使用多核的好处远远大于缺点。

只需遵循并行运行的简单规则:在每个CPU核心上运行一个作业,并可能额外运行一个作业来平滑IO等待。更多的工作将使他们在没有好处的情况下争夺CPU时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40945738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档