假设有
List<decimal> list = new List<decimal>(int.MaxValue);
需要求list所有元素的累加和(假设和不超出decimal的范围)
想法是将list分成N份,由N个服务器各自计算一部分,最终合并结果.
.net下是否有现成的框架可用?
单机跑这个还好吧,如果对时间要求不高的话应该也就小时级完成。
你非要分布式算的话针对你这个极为特殊的场景其实用不上任何框架,你只需要多搞几台机器确保每台机器拿到不同范围的数据就完了(前面搞一台做任务分割),临时数据随便找个缓存中扔一下。
@Coder007: 没错啊,我给你的方案也是把数据拆到不同机器上来算的,比如int段你拆成2^10个子段,下面的进程自己去拿任务做,计算完了把数据推到缓存中或直接对缓存中已有结果做累加。最后所有任务计算完了结果就出来了。
@Daniel Cai:看了下Hadoop的介绍貌似可以干这事儿(没深入了解不知是否可行),.net下就木有类似的框架吗,自己写的话稳定性也是问题.
list .AsParallel().ForAll(a=> {//要操作的代码 });
这是要累死一台机器啊,这么大的list得计算到啥时候,请看标题
这一天尚未来临。等到有一天这事情高中学历水平就能听懂,并能做的话,那么人工智能已经能做了,C#已经灭亡了。
小学僧表示不敢说话.默默问下大侠,针对该问题如果对计算时间有要求的话是否有好的解决方案.
@Coder007: 你问的方式很学生,或者说很通用,基本上可以定义为百万、千万投入级别的问题,
也许你适合到微软研究院啥的去工作,或者自己研究一下人工智能啥的。
普通的几百元,几千元的解决方案,最简单的就是在数据库里面sum,这就很快了。
在内存里面的话,你内存够,单机应该也没啥太大问题。
我并不是在讽刺你或者啥,只是感觉这种问题问大学老师适合,社区问不是很适合...
分布式不是普通人能搞的...你能搞的话,十万月薪没有问题。
需要框架干嘛,自己实现就好了