有哪些语言特性或者说编程方式更利于多核并行?

2015-05-12 13:39:01 +08:00
 phx13ye
现在的CPU核心堆的越来越多, 跑分也越来越强, 但是总感觉程序使用体验没有提升.

举例来说: 我现在用的爪机是联发科的八核6752, 大部分程序的体验还是和以前手机差不多(忘了是高通的什么了, 好像是胶水双核的). 可能比较明显的就是解压缩,安装APP快了

电脑玩游戏, 帧数提升也是换显卡比换CPU大, 当然这里瓶颈也主要是IO和渲染.

所谓的多核优化, 到底是什么决定的?
4913 次点击
所在节点    程序员
35 条回复
robertlyc
2015-05-12 15:10:35 +08:00
erlang/elixir
CRVV
2015-05-12 15:12:18 +08:00
@wy315700
什么叫黏在一起?那不是黏在一起的设计是怎么样的?
这就是多核处理器的不同设计方案嘛,为啥要用个“黏”?
我只是想说这个词编得莫名其妙,让我感觉完全是用来诋毁的
baozijun
2015-05-12 15:16:57 +08:00
Akka
wy315700
2015-05-12 15:22:12 +08:00
@CRVV 就是说

一个板子上放了两个单核CPU,这个板子不是指芯片,而是PCB板子。

两个核心之间通过北桥芯片通讯

逻辑上这个是两个CPU,而不是双核CPU
holulu
2015-05-12 15:37:42 +08:00
多核优化只能说是一种程序运作方式,由程序本身决定的。无论使用什么语言都可以写出使用单核或多核的程序,最终怎么跑还是得看程序开发者怎么写。

现在好像也没有什么技术能够将单核程序自动使用多核来处理,毕竟这个和具体的程序逻辑有关,如果这个自动判断的方法出现问题,那程序的执行就混乱了。

要利用多核,可以通过开多进程或多线程处理,这些都得程序开发者在程序中使用了相关的技术才能用上多核。而像协程和类似的轻量级进程或线程的并发机制也只是省去了开发者自行调度进程或线程的工夫,但程序设计上还是得真正利用上这些并发机制才能达到利用多核的效果。
所以无论编程语言有多好的并发机制,如果程序本身没有用上,那程序的主要业务逻辑也只能跑在单核上。对于有 GC 和自动异步 IO 的语言来说(如 Golang),如果程序逻辑没有用上这些并发机制(如 Golang 的 goroutine),则程序的主要逻辑还是跑在单核上,或许其他的部分像 GC 和 IO 操作则会跑在其他核上,但这对于多核的利用是有限的。

所以最后还得程序本身的逻辑决定了多核的利用。
1ternal
2015-05-12 15:39:10 +08:00
二郎
phx13ye
2015-05-12 15:45:31 +08:00
@holulu 是的,所以我想知道怎么利用多核的优势
jy01264313
2015-05-12 16:06:38 +08:00
scala
holulu
2015-05-12 16:52:27 +08:00
@phx13ye 上面不是有很多方案了吗?具体怎么实现还是得看用什么语言了
yyw
2015-05-12 16:53:03 +08:00
erlang 和 golang
hepin1989
2015-05-12 17:54:22 +08:00
还和写软件的人有关
davidlau
2015-05-12 22:23:18 +08:00
函数式编程的特性:不可变量Immutable var,高阶函数、闭包,尽量少的状态变量, Map Reduce Filter

函数式语言:Swift Scala Erlang Haskell LISP


附上最近写的2篇博文:

通过Swift学函数式编程
http://davidlau.me/2015/05/11/learning-functional-programming-in-swift/

笔记:软件开发的转折——并行化
http://davidlau.me/2015/05/11/notes-on-The-Free-Launch-Is-Over/
zwzmzd
2015-05-12 23:29:00 +08:00
matlab这种矩阵运算

还有map,reduce这种批量型的
phx13ye
2015-05-12 23:36:22 +08:00
@davidlau 然而你的博客挂了
davidlau
2015-05-15 11:55:13 +08:00
@phx13ye 博客修好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/190417

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX