主要是下面的代码: register n = (count + 7) / 8;   /\* count > 0 assumed \*/ switch (count % 8) { case 0:    do { \*to = \*from++; case 7:     \*to = \*from++; case 6:     \*to = \*from++; case 5:     \*to = \*from++; case 4:     \*to = \*from++; case 3:    …
ID:技术让梦想更伟大 作者:李肖遥 wechat链接:https://mp.weixin.qq.com/s/b1jQDH22hk9lhdC9nDqI6w 相信大家写业务逻辑的时候,都是面向if.else.for.while.switch编程.但是你见过switch嵌套do..while吗? 先上代码 void send( int * to, int * from, int count) { int n = (count + ) / ; switch (count % ) { case : do…
达夫设备设备是一段非常巧妙,看起来非常诡异的c代码,它可以很大的提高程序执行的效率(本文将试验),达夫设备的来源我就不说了,我们来分析一下. 达夫设备是考虑到我们一般用for或者while循环的时候,如果执行循环内容本身用不了多少时间,那么时间将被主要消耗在每次循环的比较语句上边. 事实上比较语句是有很大优化空间的,假设你要循环1000次,结果你从第一次开始就不断的比较是否达到上界,这是很徒劳的. 达夫这个哥们利用了switch语句的跌落行为设计了达夫设备. 我们用达夫设备计算一个累加运算,累加…
前言 在<高性能JavaScript>一书的第四章算法和流程控制中,提到了减少迭代次数加速程序的策略—达夫设备(Duff's device).达夫设备本身很好理解,但是其效果是否真的像书中所说“如果迭代次数超过1000,那么达夫设备的执行效率将明显提升”?还是随着浏览器性能的逐渐增强,这种以牺牲代码阅读性而获取的性能提升已经微不足道? 达夫设备 达夫设备真的很简单,说白了就是“循环体展开”.看如下的代码: var a = [0, 1, 2, 3, 4]; var sum = 0; for(va…
最近阅读<高性能JavaScript>时,在书中的“达夫设备“ . 对此,有些感悟,同时有些疑问,希望看到的朋友,能帮忙解释下,在此先提前感谢了. 1. 先说自己的理解吧: ”达夫设备“的目的是减少迭代次数,提高循环的效率,减少时间,提升性能. 感受:感觉代码的优化,真的需要用工匠精神来雕琢,代码的思想很好,也很巧妙. 原文的意思:是否值得使用达夫设备,无论是原始的版本还是修改后的版本,很大程度上依赖于迭代的次数.如果循                         环迭代次数少于 1'00…
在看strcpy.memcpy等的实现发现用了内存对齐,每一个word拷贝一次的办法大大提高了实现效率,参加该blog(http://totoxian.iteye.com/blog/1220273). duff's device也是利用了类似的原理减少比较的次数来提高了效率. 前几天在网上看见了一段代码,叫做“Duff's Device”,后经验证它曾出现在Bjarne的TC++PL里面: void send( int * to, int * from, int count)         …
又要开始罗里吧嗦的 第四章  Summary 了. 这一次我尽量精简语言. 如果你认为 重复调用一个方法数次有点辣眼睛的话 比如: function test(i){ process(i++); process(i++); process(i++); process(i++); } 那么你可能选择更优解 比如: function test(i){ for(j=0,j<4,j++){ process(i++); } } 但其实第一种性能优于第二种. 有人可能已经想到  Duff's Device…
1 初始加入设备后.上传Object的详细流程  前几篇博客中,我们讲到环的基本原理即详细的实现过程,加入我们在初始创建Ring是执行例如以下几条命令: •swift-ring-builder object.builder create 5 3 1   •swift-ring-builder object.builder add z1-127.0.0.1:6010/sdb1 100     •swift-ring-builder object.builder add z2-127.0.0.1:6…
1 创建Ring 代码具体分析 在OpenStack_Swift--Ring组织架构中我们具体分析了Ring的具体工作过程,以下就Ring中添加�设备,删除设备,已经又一次平衡的实现过程作具体的介绍. 首先看RingBuilder类 def __init__(self, part_power, replicas, min_part_hours): #why 最大 2**32 if part_power > 32: raise ValueError("part_power must be a…
和物理机一样,虚拟机包括几个重要的部分:CPU.内存.磁盘设备.网络设备等.本文将简要总结虚机磁盘设备有关知识. 1. Nova boot CLI 中有关虚机块设备的几个参数 nova boot CLI 的完整参数如下: usage: nova boot [--flavor <flavor>] [--image <image>] //boot from image with id [--image-with <key=value>] //image metadata p…