排序特别是大规模的物理排序从来就是个头痛事,什么办法的长处都存在自己的合适范围,并无所谓的万能药。并行处理可能应该能够有效减少排序时间。
我对并行的理解并不多,对能够并行的线序如何拿捏我也没谱。如果对时限要求特别的苛刻,粒度可以到指令级单位,但是如果设计不匹配,指令级并行未必能提高效率。一般情形应该在算力上做事务量的平衡,而不是纠结于什么纤程线程进程。因为无论线程进程,它所进行的时间也可以非常的漫长。同样的任务量,对执行时间的影响可以有很多的因素,在硬能力一致的前提下,其影响因素主要在算法设计。对于一个任务,指令线性地执行总体上来说是无法改变的现实,可改进的只能是并序执行能力的提高。指令、过程或者变化的存在本身即意味时间总是无法不要的。无论并行能力多强,也还是需要占用时间,而时间总是线性的。过程或者有限是可以压缩的,但却永远没法压缩无限。
扯远了。
为了完成任务,比如提高响应即时性,只有针对有限算力将任务进行合理分解使其响应效果达到让人觉得相对满意的程度。所以,任务的分解如何能够最好,必然是一个综合性的相对中庸的答案。而系统工程中的所谓粒度不会是一个,在各个模块各个层次都会存在自己的粒度(心跳速度),各个模块各个层次的粒度相互配合形成整个系统的正常心跳速度(所谓相对稳定的保障)。整体决定局部,如果局部不配合,整体就无法达到相对的稳定。所以,各个模块各个层次的任务分配必须配合整体任务的分配。用个时髦的词来形容,可称之“顶层设计原则”。
所谓的整体总是一个相对稳定的系统,因为它的稳定不仅在于自己及其自己的局部,还因为它也是更大系统中的一个局部,所以它的稳定还受更大系统的稳定性影响。影响的效果在于两者之间相关性的复杂度。实际上,一个系统总是存在于无数更大的系统中,同时它也包含了无数的子系统,并且以上的性质描述同样适用于它们的联系。
阅读(1928) | 评论(0) | 转发(0) |