2C4T与4C4T在计算密集型任务下的效率对比
文章目錄
- 1. 環(huán)境
- 2. 代碼
- 3. 結果
1. 環(huán)境
機器1:Intel? Core? i5-4200H CPU @ 2.80GHz,雙核四線程,win10 x64,16G內(nèi)存
機器2:Intel? Core? i3-9100T CPU @ 3.10GHz,四核四線程。wn10 x64,8G內(nèi)存
目的:大概測試一下2C4T與4C4T在計算密集型任務下的效率提升對比,內(nèi)存大小、頻率暫且忽略。
方法:使用openMP控制計算任務中的線程使用數(shù)量,測試12層for循環(huán)所消耗的時間(12是1、2、3、4的公倍數(shù),防止openMP分配任務不均)。實際是測120層的耗時,再除以10。
2. 代碼
環(huán)境:
#include <iostream> #include <omp.h>using namespace std;const int N = 1e9;int main() {int ans = 0;int peat = 120;double start = omp_get_wtime(); #pragma omp parallel for num_threads(1)for (int i = 0; i < peat; ++i) {for (int j = 0; j < N; ++j) {++ans;}}double end = omp_get_wtime();// 計算12層for循環(huán)所消耗的時間cout << "time: " << (end - start)/10 << endl;return 0; }3. 結果
機器1(2C4T):
| 1 | 2.0653 |
| 2 | 1.37322 |
| 3 | 1.15472 |
| 4 | 1.10587 |
機器2(4C4T):
| 1 | 1.72509 |
| 2 | 0.877413 |
| 3 | 0.618491 |
| 4 | 0.49988 |
在雙核四線程的機器上,單線程執(zhí)行與雙線程執(zhí)行有明顯的效率提升,但是當線程數(shù)開到3、4時,效率提升幾乎可以忽略不計。原因在于,雙核四線程,真正的核心只有2個,也就只有兩個物理線程。多出來的兩個線程是模擬出來的。但是,這種計算密集型的任務,類似等待IO這種耗時的操作也比較少,核心也就不會切換,虛擬出來的線程幾乎派不上用場。所以,最多就是兩個線程的效率。
而,四核四線程,是實打?qū)嵉乃膫€線程在工作。從任務耗時來看,所消耗的時間與線程數(shù)量成反比,4線程的僅是1線程耗時的四分之一,4倍左右的效率提升。
總結
以上是生活随笔為你收集整理的2C4T与4C4T在计算密集型任务下的效率对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM8S105S4T6C和STM8S1
- 下一篇: CentOS7挂载磁盘,4T磁盘挂载方法