论坛首页 综合技术论坛

又有人投入Erlang的怀抱了:37Signals Campfire loves Erlang

浏览 15298 次
精华帖 (12) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-15   最后修改:2009-05-15
ShiningRay 写道
37signals憋不住了啊
受够rails的苦了吧


你没仔细看,这段东西之前是用 C 写的。
说明作者不喜欢语法像 C 的命令式语言,喜欢没括号没分号的函数式语言。
0 请登录后投票
   发表时间:2009-05-15  
Concurrency 是一个trival问题.Parallelism是No-trival的问题,不存在一个可以屏蔽掉所有细节的platform或者API集.换一句话说Parallelism很大程度上不是一个工程问题,更多的是算法问题甚至是数学问题.举个最简单的例子,如何并行计算Fabbonic数列?
0 请登录后投票
   发表时间:2009-05-15   最后修改:2009-05-15
Trustno1 写道
Concurrency 是一个trival问题.Parallelism是No-trival的问题,不存在一个可以屏蔽掉所有细节的platform或者API集.换一句话说Parallelism很大程度上不是一个工程问题,更多的是算法问题甚至是数学问题.举个最简单的例子,如何并行计算Fabbonic数列?


Axum很简单啊

node1=[(1+√5)/2]^n
node2=[(1-√5)/2]^n

node3=(√5)*{node1-node2 }


Axum代码


 n -<< {node1,node2} &>- node3 ==> print_result
0 请登录后投票
   发表时间:2009-05-15  
ray_linn 写道
Trustno1 写道
Concurrency 是一个trival问题.Parallelism是No-trival的问题,不存在一个可以屏蔽掉所有细节的platform或者API集.换一句话说Parallelism很大程度上不是一个工程问题,更多的是算法问题甚至是数学问题.举个最简单的例子,如何并行计算Fabbonic数列?


你指的是f(n-1)和f(n-2)之后采用并行?


常规的递归和非递归算法都是无法并行的,最好的情况也是o(n)的线性算法.
通项公式可以在一定范围内并行,但是超过一定的n就有很大的精度误差.
0 请登录后投票
   发表时间:2009-05-15   最后修改:2009-05-15
Trustno1 写道
ray_linn 写道
Trustno1 写道
Concurrency 是一个trival问题.Parallelism是No-trival的问题,不存在一个可以屏蔽掉所有细节的platform或者API集.换一句话说Parallelism很大程度上不是一个工程问题,更多的是算法问题甚至是数学问题.举个最简单的例子,如何并行计算Fabbonic数列?


你指的是f(n-1)和f(n-2)之后采用并行?


常规的递归和非递归算法都是无法并行的,最好的情况也是o(n)的线性算法.
通项公式可以在一定范围内并行,但是超过一定的n就有很大的精度误差.



让F(n-1)和F(n-2)各在一个线索上跑,至少也可以double一倍(理论上)。

axum如此写

node1=n-1
node2=n-2

node3=f(n)
{ PrimaryChannel::Num1 ==> node1, PrimaryChannel::Num1 ==> node2 } &>- ipJoin -<: { node3, node3 } >>- PrimaryChannel::Sum;    



axum应该还可以通过票据来实现并行。。不过我还没仔细想过。
0 请登录后投票
   发表时间:2009-05-15   最后修改:2009-05-15
ray_linn 写道
Trustno1 写道
Concurrency 是一个trival问题.Parallelism是No-trival的问题,不存在一个可以屏蔽掉所有细节的platform或者API集.换一句话说Parallelism很大程度上不是一个工程问题,更多的是算法问题甚至是数学问题.举个最简单的例子,如何并行计算Fabbonic数列?


Axum很简单啊

node1=[(1+√5)/2]^n
node2=[(1-√5)/2]^n

node3=(√5)*{node1-node2 }


Axum代码


 n -<< {node1,node2} &>- node3 ==> print_result

耍小聪明是不行滴.....不信你去试试看,让你算f(100),保证你算不出2550.这种算法有精度问题不说,
如果求n=100,递归算法是100次加法,你这个要200次乘法.你要达到递归算法的复杂度得跑两个cpu才行,这不是吃饱了撑的的么.

如果你是普通递归 f(n)=f(n-2)+f(n-1).不管你在几个CPU上跑都不会超过线性的尾递归算法.
如果是尾递归算法,是无法并行的.
0 请登录后投票
   发表时间:2009-05-15   最后修改:2009-05-15
Trustno1 写道
ray_linn 写道
Trustno1 写道
Concurrency 是一个trival问题.Parallelism是No-trival的问题,不存在一个可以屏蔽掉所有细节的platform或者API集.换一句话说Parallelism很大程度上不是一个工程问题,更多的是算法问题甚至是数学问题.举个最简单的例子,如何并行计算Fabbonic数列?


Axum很简单啊

node1=[(1+√5)/2]^n
node2=[(1-√5)/2]^n

node3=(√5)*{node1-node2 }


Axum代码


 n -<< {node1,node2} &>- node3 ==> print_result

耍小聪明是不行滴.....不信你去试试看,让你算f(100),保证你算不出5050.这种算法有精度问题不说,
如果求n=100,递归算法是100次加法,你这个要200次乘法.你要达到递归算法的复杂度得跑两个cpu才行,这不是吃饱了撑的的么.


参见方法2,2个线程,各跑一只。


0 请登录后投票
   发表时间:2009-05-15   最后修改:2009-05-15
ray_linn 写道
Trustno1 写道
ray_linn 写道
Trustno1 写道
Concurrency 是一个trival问题.Parallelism是No-trival的问题,不存在一个可以屏蔽掉所有细节的platform或者API集.换一句话说Parallelism很大程度上不是一个工程问题,更多的是算法问题甚至是数学问题.举个最简单的例子,如何并行计算Fabbonic数列?


Axum很简单啊

node1=[(1+√5)/2]^n
node2=[(1-√5)/2]^n

node3=(√5)*{node1-node2 }


Axum代码


 n -<< {node1,node2} &>- node3 ==> print_result

耍小聪明是不行滴.....不信你去试试看,让你算f(100),保证你算不出5050.这种算法有精度问题不说,
如果求n=100,递归算法是100次加法,你这个要200次乘法.你要达到递归算法的复杂度得跑两个cpu才行,这不是吃饱了撑的的么.


参见方法2,2个线程,各跑一只。




尾递归一个CPU就比你快了,n=100 f(n-1) 99次加法,fun(n-2) 98次加法.这还不算上堆栈和thread的开销.
0 请登录后投票
   发表时间:2009-05-15   最后修改:2009-05-15
比 fib 速度请用 C,循环用 goto。C 写的单线程算法就打翻 VM 语言好多个核了。

不过聊天室的 concurrency 和 parallel 真的没什么联系……
瓶颈不在 cpu,在 io 和锁。所以 C 算得快也没多大帮助。
0 请登录后投票
   发表时间:2009-05-15   最后修改:2009-05-15
Trustno1 写道
ray_linn 写道
Trustno1 写道
ray_linn 写道
Trustno1 写道
Concurrency 是一个trival问题.Parallelism是No-trival的问题,不存在一个可以屏蔽掉所有细节的platform或者API集.换一句话说Parallelism很大程度上不是一个工程问题,更多的是算法问题甚至是数学问题.举个最简单的例子,如何并行计算Fabbonic数列?


Axum很简单啊

node1=[(1+√5)/2]^n
node2=[(1-√5)/2]^n

node3=(√5)*{node1-node2 }


Axum代码


 n -<< {node1,node2} &>- node3 ==> print_result

耍小聪明是不行滴.....不信你去试试看,让你算f(100),保证你算不出5050.这种算法有精度问题不说,
如果求n=100,递归算法是100次加法,你这个要200次乘法.你要达到递归算法的复杂度得跑两个cpu才行,这不是吃饱了撑的的么.


参见方法2,2个线程,各跑一只。




尾递归一个CPU就比你快了,n=100 f(n-1) 99次加法,fun(n-2) 98次加法.这还不算上堆栈和thread的开销.



这当然是和f(n-1)+f(n-2)的算法比,否则有啥可比性?
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics