re: 数据结构 : 堆之外传 Henry Ho 2008-09-30 03:39
作者风趣的语言来写技术文章令人印象深刻,这正是国外著作的优点也是国内科技书籍的缺点,建议将来写书,我一定大力支持:)
另外指出几个小小的代码缺陷:
1、Capacity应该开放,否则处理海量数据频繁扩展数组太影响性能。
2、Add,Remove,GetMin换成Push,Pop,Peek更符合栈操作术语。
re: 数据结构 : Hash Table [II] standy116 2008-09-24 11:51
请问楼主一个问题,hashtable在通过散列函数计算得到该value对应的key值之后是如何定位到该key的呢,是顺序查找吗?hashtable的存储结构里面应该没有逻辑地址这个概念吧?
re: 并行思维 [III] gakaki 2008-09-02 19:51
微软是有并行框架了 ,但是实用性 就。。。
开源界用ERLANG 可以去infoq看看 REST ERLANG
re: 并行思维 [III] egmkang 2008-09-02 17:47
这个是"并行思维"????
re: 并行思维 [III] 闲聊闲逛 2008-09-02 17:29
太复杂了哦!
re: 并行思维 [III] 有容乃大 2008-09-02 17:05
举几个例子将会说得更加明白。
-----------------------------------------------
隆重发布.net项目开发工具(V3.0 ):
http://www.cnblogs.com/mrhgw/archive/2008/08/06/1261664.html
http://www.mrhgw.cn
re: 并行思维 [III] 飞鱼2006 2008-09-02 16:08
不错!
re: 并行思维 [III] 夏天可是个好季节 2008-09-02 15:50
沙发!建议楼主在线程安全方面多多举例说明数据竞争带来的一些严重后果,以及什么情况下带来数据竞争。否则可能就比较感性:-)
@Sumtec
-----------------------
例如无符号整型值(4字节),那就开个4G的数组
-----------------------
老兄100万个整型数据是4M 不是4G
((4*1000000)/1024)/1024=3.814697265625M
re: 并行思维 [II] 夏天可是个好季节 2008-08-26 21:56
@Angel Lucifer
多谢!多谢!:-)
re: 并行思维 [II] Angel Lucifer 2008-08-26 20:59
@夏天可是个好季节
在此恭祝老兄心想事成,:-)
re: 并行思维 [II] 夏天可是个好季节 2008-08-26 06:31
@Angel Lucifer
这个,不好意思,9月份开始找工作啦(研究生的)。可能这一段时间得忙活一阵子了:-)估计十一月多才安定下来~
re: 并行思维 [II] Angel Lucifer 2008-08-25 20:22
@夏天可是个好季节
兄台最近很少露面啊。
re: 并行思维 [II] 夏天可是个好季节 2008-08-25 20:17
原来在DDJ上,Herb Sutterzhen针对Amdahl定律提出如何在程序中实现所谓的SuperLiner,受到了很多质疑,实质上是在Thread Parallel上使用SIMD进行优化的结果,呵呵。
好文!支持!
re: 并行思维 [II] Angel Lucifer 2008-08-25 19:45
@非主流程序员
这些在后面都会讲到,o(∩_∩)o...
re: 并行思维 [II] 非主流程序员 2008-08-25 11:38
我比较关心如何用 线程 来实现 并行计算。最好文章有场景介绍的。
比如,查找,排序等应用。
re: 并行思维 [I] Angel Lucifer 2008-08-25 10:21
图 6 和图 8 各有其适应场合,分别对应粗细粒度并行,文中已有说明。但在实践中粗粒度并行往往性能不佳,所以可以看到众多文章要求把粒度细分。
re: 并行思维 [II] Angel Lucifer 2008-08-25 10:16
@怪怪
嗯,这个建议好(笑)。
其实,在并行思维 [I] 中讲了几个并行的示例,不过没有拿来作对比(好处不言自喻)。这篇理论性强一些,后面会注意。
re: 并行思维 [II] 怪怪 2008-08-25 08:52
@Angel Lucifer
我是指
“放弃过去的串行思维,开始并行思考。”
如果能举一两个同时有两个模型的经典例子, 然后对比之, 效果会非常好~
re: 并行思维 [I] yzlhccdec 2008-08-24 22:03
@怪怪
LZ是说某个步骤比较耗时间吧。。
re: 并行思维 [II] Angel Lucifer 2008-08-24 17:06
@未登录的怪怪
有图例啊,只是没有代码示例而已。
而且文章太长。就这些还没说完呢,呵呵。
@wfa
Page 的生命周期其实是流水线设计,还是适合并行处理嘀。
我们只是在逻辑上把它理解成串行,其实是并行处理,而且 IIS7 进一步划分模块步骤, HTTP 并发量应该说不差于任何 Web Server。
可以看下
http://www.cnblogs.com/lucifer1982/archive/2008/07/19/1246508.html 所说的流水线并行分解。
@水言木
^_^
@曲滨*銘龘鶽
的确 I/O 目前几乎是任何并行程序设计的瓶颈所在。但是并行要处理的情况也很多,:-)
re: 并行思维 [II] 曲滨*銘龘鶽 2008-08-24 11:52
现在硬盘是瓶颈
如果程序都在内存中运行启动多线程并行会很快
但如果涉及磁盘操作多半就会出现一个cpu用 50%这样的效果
---郁闷;
以前做过些测试,比如操作数据库如果没有磁盘阵列的情况
开多线程有很多时候还没有单线程快;
re: 并行思维 [II] 水言木 2008-08-24 10:43
好文,非常喜欢!!
re: 并行思维 [II] wfa 2008-08-24 10:12
就这种角度来说,web form的设计确实不利于提高并发量,生命周期太长了,而且是串行的,呵呵。
re: 并行思维 [II] 未登录的怪怪 2008-08-24 03:23
好文,支持一个。
不过估计老兄需要加点具体的例子, 光是理论对大家来说太抽象了 :)
re: [翻译]Singularity Angel Lucifer 2008-08-01 14:34
@JimLiu
其实这方面要做得工作很多,构造运行时工作量倒不是很大。
关于 Singularity,Microsoft 研究院有相当的论文资料,这个项目虽然创新不少,性能也足够好,真正的微内核架构,但是用于研究的意义更大一些,适合那些前沿操作系统研究人员。
re: [翻译]Singularity JimLiu 2008-08-01 14:14
那不是得脱离OS系统,先给C#实现一个Runtime???
re: 数据结构 : 堆之外传 JimLiu 2008-08-01 13:51
核心算法堆维护
好像一般经典数据结构书上都用heapAdjust这个名字,呵呵
其实堆理解后还是相当简单的,堆维护算法不过10多行
但是堆对计算机算法实在太重要啦!我们常常说,“C++里new出来的内存在堆上”、“CLR中托管引用类型在托管堆上”,还有PriorityQueue也通常用堆实现,堆无处不在啊,呵呵!
堆排序也是一种高效的排序,时间稳定在O(nlogn),空间稳定在O(1),是最节省空间的先进排序算法。虽然速度比不上快排但是空间相当省。不过快排可以多线程优化,而堆排序不能,这样的话堆排序就会吃亏了。
re: 并行思维 [I] 怪怪 2008-07-20 23:07
其实图8未必会比图6快, 关键在于不是所有的任务都可以图6的~
在现实中, 让一个处理单元(如流水线的某一环节)只处理一个问题, 很多时候是比如工人只做一件工作最熟练等原因。 而计算机上则不存在这种问题,所以我觉得在图6和图8都合适的情况下, 也许优先图6是个不错的选择~
re: 并行思维 [I] 魏琼东 2008-07-19 17:02
好文,写的好
re: 并行思维 [I] Angel Lucifer 2008-07-19 13:26
@Jeffrey Zhao
@lbq1221119
re: 并发数据结构:谈谈volatile变量 夏天可是个好季节 2008-07-19 13:16
volatile对于多线程程序几乎可以说没有作用,你仅仅在阻止编译器优化你的代码并且在一些情况下,更改load的的语义。不要理会MSDN上的说明。MSDN对于volatile的说明包含太多的误导成分。
实际上对于.NET,volatile很简单,任何对于volatile的load均有acquire语义,任何对于(不关事volatile还是非volatile的)store均有release语义。并且,不论是load acq还是 store rel都是针对当前的processor而言的,并不保证对于其他 processor的可见性。因此说volatile对于可见性有帮助也是没有设么原因的。
re: 并行思维 [I] lbq1221119 2008-07-19 12:47
cool.^_^
re: 并行思维 [I] Jeffrey Zhao 2008-07-19 12:41
wowo,支持
re: 并行思维 [I] Angel Lucifer 2008-07-19 12:36
沙发自己做,哈哈。
非常精彩,虽然了解HASHTABLE的大致原理,不过没有仔细研究过。
re: 数据结构 : Hash Table [II] Angel Lucifer 2008-07-03 17:00
@朝晖的.net
构造函数中的初始容量是多少,它的容量就是多少。
当然采用素数更好。
只有在需要扩容的时候,才会需要知道要扩容的大小是什么素数。
@楼上诸位
还是那句话,有帮助就好,:-)
同时感谢各位的评论,有时诸兄的评论也能帮助楼主成长。
再次感谢。
@ Angel Lucifer
希望您能继续写这一系列文章 我觉得对我很有帮助。
好文章, Sumtec 的评论也是非常好的补充
关注.
@醉春风
确切地说:当散列表元素数量 >= 数组大小 * 装填因子时,就应该扩容了
你再好好看看楼主文章就明白了。
楼主请问“比如当我们要在容量为 11 的 Hashtable 中添加 8 个元素。因为 8 / 11 > 0.72,所以要扩容。根据算法,跟 2 * 11 相近的素数是 23。。。”
这个计算是怎么个计算法?添加8个,但是容量是11个,为何需要扩容?8/11 这样计算?
没明白,望指点。感谢你的文章。
re: [翻译]Singularity 坏人 2008-07-03 10:00
很不错,如果成功,相信软件世界会走出馄饨,进入秩序。
@Angel Lucifer
楼主,问个问题:
当我 Hashtable ht = new Hashtable(1024);的时候,初始化的散列表的初始容量是不是1103?
msdn说 public Hashtable (int capacity)
capacity Hashtable 对象最初可包含的元素的近似数目(这里是不是要经过楼主说的素数生成算法计算得出?)。
如果我new hashtable的时候直接Hashtable ht = new Hashtable(int 素数);是不是就不需要素数生成算法计算?
楼主我很菜``i‘m sorry~~问题有点嫩~~
虽然是相当基础的内容,但现在很多人却不了解,这样的基础内容可以多来点,支持一把。
楼主~~早啊~~
我得好好看看`~理解越深刻,记忆越牢固,运用越熟练。
re: 数据结构 : Hash Table [II] Angel Lucifer 2008-07-03 07:30
@金色海洋(jyk)
呵呵,有帮助就好。