并行性
来源:互联网 发布:晟元数据 刘斌 编辑:程序博客网 时间:2024/04/28 00:54
并行性:cpu处理指令是并行的,前一条指令处理时,紧接着前一条的指令也会开始处理,如果后一条指令和前一条指令无关,那么程序性能会得到提升,我们常常会把一个操作分解成几条指令并行来提升性能。
实例代码:
long long getSystemTime() { struct timeb t; ftime(&t); return 1000 * t.time + t.millitm;}int main(){int * b_test_data = (int *)malloc(80000000*sizeof(int)); int b_loop; long long b_begin, b_end, b_ttl1 = 1, b_ttl2 = 1; for(b_loop = 0; b_loop < 80000000; b_loop++) { b_test_data[b_loop] = 1; } b_begin = getSystemTime(); for(b_loop = 0; b_loop < 80000000 - 1; b_loop += 2) { b_ttl1 = b_ttl1*b_test_data[b_loop]*b_test_data[b_loop + 1]; } for(; b_loop < 80000000; b_loop++) { b_ttl1 = b_ttl1*b_test_data[b_loop]; } b_end = getSystemTime(); printf("time = %lu, b_ttl = %lu\n", b_end - b_begin, b_ttl1); return 0;}
运行结果:
并行:
int main(){int * b_test_data = (int *)malloc(80000000*sizeof(int)); int b_loop; long long b_begin, b_end, b_ttl1 = 1, b_ttl2 = 1; for(b_loop = 0; b_loop < 80000000; b_loop++) { b_test_data[b_loop] = 1; } b_begin = getSystemTime(); for(b_loop = 0; b_loop < 80000000 - 1; b_loop += 2) { b_ttl1 = b_ttl1*b_test_data[b_loop]; b_ttl2 = b_ttl2*b_test_data[b_loop + 1]; } b_ttl1 *= b_ttl2; for(; b_loop < 80000000; b_loop++) { b_ttl1 = b_ttl1*b_test_data[b_loop]; } b_end = getSystemTime(); printf("time = %lu, b_ttl = %lu\n", b_end - b_begin, b_ttl1); return 0;}
运行结果:
0 0
- 并行性
- 如何开发并行性
- 并行
- 并行
- 并发性与并行性 并发性与并行性
- 并行性与并发性
- C#测试WCF并行性
- 并行性和并发性的区别
- 并行性与并发性的区别
- 并发性和并行性的区别
- 并发性和并行性的区别
- 并发性和并行性的区别
- 并行性和并发性的区别
- 原理篇-局部性与并行性
- 使用intradisk并行性进行能耗管理
- 如何提高机器速度 并行性
- 开发计算机并行性的方法【理论】
- 关于node.js中的并行性
- 如何在TOMCAT下指定JDK的路径
- Map接口的使用注意事项
- filter的相关应用
- 动态Shellcode注入工具 – Shellter
- cookie 在php中的实现
- 并行性
- uva 11212 UVa11212 Editing a Book
- 统计汉字
- 关联引用(associative reference)
- 给Apache虚拟主机增加端口的方法
- 《一种时间敏感的SSD和HDD高效混合存储模型》结 重难!
- SVM用于上证指数的预测
- ubuntu 上wine 如何认到串口
- 网站压测工具Webbench源码分析