优化程序性能
将无需重复执行的代码移出循环
优化前
let str = String(repeating: "a", count: 10_0000)
var i = 0
while i < strlen(str) {
i += 1
}
优化后
优化前每次循环都会执行一次strlen(),优化后将只需执行一次的strlen()移出循环; 而for-in与while不同,strlen()执行一次生成迭代器之后就不再执行strlen()
let len = strlen(str)
var i = 0
while i < len {
i += 1
}
for i in 0..<strlen(str) {
}
将频繁的内存引用合并为一次内存引用
优化前
long *d = malloc(sizeof(long));
int *a = malloc(sizeof(int) * 100000);
for (int i = 0; i < 100000; i++) {
a[i] = i;
}
for (int i = 0; i < 100000; i++) {
*d += a[i];
}
优化后
long t = 0;
for (int i = 0; i < 100000; i++) {
t += a[i];
}
*d = t;
循环展开
优化前
优化后
int i;
for (i = 0; i < 100000 - 1; i+=2) {
*d += (a[i] + a[i+1]);
}
for (; i < 100000; i++) {
*d += a[i];
}