首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为一名软件开发人员,MultiCore架构的出现是否会影响我?

作为一名软件开发人员,MultiCore架构的出现是否会影响我?
EN

Stack Overflow用户
提问于 2009-02-19 22:29:59
回答 11查看 550关注 0票数 10

作为一名主要与高级编程语言打交道的软件开发人员,我不确定我可以做些什么来适当地关注即将出现的多核计算机。我写的大多是普通的、要求不高的应用程序,然而,我认为知道我是否需要改变任何编程范例甚至是语言来掌握未来是很重要的。

因此,我的问题是:

How to deal with increasing multicore presence in day-by-day hacking?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-02-19 22:47:19

Herb Sutter在2005年写道:The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software

票数 7
EN

Stack Overflow用户

发布于 2009-02-19 23:40:34

大多数问题不需要大量的CPU时间。实际上,对于许多目的来说,单核已经足够快了。当您确实发现您的程序太慢时,首先分析它,并查看您选择的算法、体系结构和缓存。如果这还不够,试着把问题分成不同的进程。通常,这样做只是为了隔离故障,这样您就可以了解每个进程的CPU和内存使用情况。此外,通常每个进程都将在特定的内核上运行,并充分利用处理器缓存,因此您不必为保持缓存行的一致性而承受巨大的性能开销。如果您采用多进程设计,但仍然发现问题需要比现有机器更多的CPU时间,那么您完全可以将其扩展到集群上运行。

在某些情况下,您需要在同一地址空间中使用多个线程,但要注意线程确实很难正确使用。争用条件,特别是在非安全语言中,有时需要数周时间来调试;通常,简单地添加跟踪或在调试器下运行会更改足够多的时间来隐藏问题。简单地将锁放在任何地方通常意味着您会获得大量的锁开销,有时还会有太多的锁争用,以至于您无法真正获得您所希望的并发优势。即使您获得了锁定权限,您也需要进行性能分析以调整缓存一致性。最终,如果您想要真正调优一些高并发代码,您最终可能会考虑无锁构造和比当前多线程库中更复杂的锁定方案。

票数 4
EN

Stack Overflow用户

发布于 2009-02-19 22:34:18

了解并发的好处和限制(例如Amdahl定律)。

因此,在可能的情况下,您可以利用唯一的途径获得更高的性能,这将是开放的。在更简单的方法上有很多创新的工作(未来和任务库),旧的工作正在被重新发现(函数式语言和不可变数据)。

免费午餐已经结束,但这并不意味着没有什么可利用的。

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

https://stackoverflow.com/questions/567528

复制
相关文章

相似问题

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