linux - 在单核机器上测试并行程序的性能

标签 linux multithreading concurrency virtualization

我想开始在我编写的程序中玩并发(主要是为了好玩),但我没有多核系统,而且很快也买不起。我运行Linux。有没有办法,例如使用虚拟机,比较程序的多线程实现与单线程版本的性能,而无需在具有多个处理器或内核的硬件上实际运行它?

也就是说,我希望能够实现并行算法,并且能够说,是的,这种多线程实现比单线程实现的性能更好。

谢谢

最佳答案

您无法在单核机器上可靠地测试多线程程序。竞争条件将以非常不同的方式显示,甚至完全隐藏在单核机器上。性能会下降等。

如果您想学习如何编写多线程程序,您可以在单核机器上完成第一步(即 API 的工作原理等)。但是您必须在多核机器上进行测试,而且您很可能会在多核机器上看到在单核机器上看不到的故障。

根据我的经验,虚拟机对此没有帮助。他们引入了以前没有出现的新错误,但他们无法模拟多核的真实并发。

关于linux - 在单核机器上测试并行程序的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1457307/

相关文章:

linux - 期望工具和逻辑或

c++ - 在哪些情况下我需要锁定变量以防止同时访问?

java - 我希望 main 方法打印出值 x,该值是由正在运行的线程返回的

java - 对 java 同步的工作原理感到困惑

java - 从一个文件高效复制到另一个文件

linux - 网络 block 设备 - 某些读取请求失败 - 内核 OOPS

linux - apache 重写的 URL 包含完整的 Linux 路径

c - pthread_kill 不会杀死线程 C linux

golang并发同步问题

Java并发/网络方法