1. 程式人生 > >多執行緒計算pi效率對比分析

多執行緒計算pi效率對比分析

繼續昨天的計算pi的程式 分配不同的執行緒數量得到的不同的執行時間對比

可以看到很明顯的 從一個執行緒變成兩個執行緒確實時間減少了一般左右,但是繼續增加執行緒數量卻不怎麼影響結果。這是因為我電腦的CPU型號為Intel 酷睿i3 370M,雙核四執行緒

,所以雙執行緒的程式已經佔用了全部的系統資源了。為了證明這個觀點,請看下圖:

分別是執行緒數為1、2、3、4時的執行CPU記錄,可見兩個主執行緒均已滿負荷運作,而繼續增加執行緒時,由於計算的是級數的和,都是同一種類型的計算,只會相同型別的資源而出現搶佔,無法達到超執行緒的目的,所以並不會真正的減少計算時間。

所以如果需要記性大量相同型別的計算(如級數求和),則只需按核的數量建立執行緒就能充分利用系統資源了。

相關推薦

執行計算pi效率對比分析

繼續昨天的計算pi的程式 分配不同的執行緒數量得到的不同的執行時間對比 可以看到很明顯的 從一個執行緒變成兩個執行緒確實時間減少了一般左右,但是繼續增加執行緒數量卻不怎麼影響結果。這是因為我電腦的CPU型號為Intel 酷睿i3 370M,雙核四執行緒 ,所以雙執行緒

遞迴調用搜索和執行搜尋檔案效率對比

先上結果: 多執行緒版本輸出: used time is: 0.014919s all thread is done scan completed, there are 10740 file(s) and 211 document(s) t

Linux執行計算Pi函式(互斥沒起作用???)

先上程式碼,求pi的公式就不貼了 #include <stdio.h> #include <stdlib.h> #include <pthread.h> #in

執行計算PI碰到的問題

例子如下,用於計算PI的值。gIterations是計算PI的迭代次數,gThreadCount是執行緒的個數。方法是這樣子的,把PI分成gThreadCount個段,分別讓一個執行緒來執行PI的求值操作。求得PI值有兩種方法,一種是直接把各個執行緒每一步所求得的值加到gSu

Linux程式設計 程序,執行求解PI(圓周率)

題目: 連結 多程序: #include <unistd.h> #include <stdio.h> #include <stdlib.h> #define n 100000000.0 int main() { i

MFC執行計算圓周率介面化演示

學期末老師讓設計一個多執行緒無限計算圓周率的圖形化演示內容。我採取MFC進行設計的。 其中的一個執行緒用來計算pi,採用的是之前傳的一段神奇的計算圓周率的程式碼,它採用每次計算4位的方法,很適合這個練習的可以進行演示的要求。關於這個演算法的理解我是基於以下連結點選開啟連結,

《Exploring in UE4》執行機制詳解[原理分析]

目錄 一.概述 二."標準"多執行緒 三.AsyncTask系統 3.1 FQueuedThreadPool執行緒池 3.2 Asyntask與IQueuedWork 3.3 其他相關技術細節 四.TaskGraph系統 4.1 從Tick函式談起 4.2 T

python執行探討 基於原始碼 初步分析

這篇文章 應該有人需要 因為我現在都需要 所以標了個關鍵字初步 摘自百度百科 儘管提高CPU的時鐘頻率和增加快取容量後的確可以改善效能,但這樣的CPU效能提高在技術上存在較大的難度。實際上在應用中基於很多原因,CPU的執行單元都沒有被充分使用。如果CPU不能正常讀取資料(

傻瓜式的解答:為什麼原子運算 AtomicInteger 可以解決執行計算臨界資源錯誤

/* 為什麼多執行緒計算臨界資源會錯誤? 原貼:https://www.cnblogs.com/wxd0108/p/5479442.html 答:多執行緒的記憶體模型分【主存】和【執行緒棧】,在處理資料時,執行緒會把值從主存load到本地棧,完成操作後再s

python執行的幾種情形分析-三種情況

情形一:預設情況   預設情況,只開啟執行緒,那麼,主執行緒結束,其他子執行緒可能還沒結束。   只使用t=threading.Thead(target=fun),t.start()。 import threading import time def run(): tim

執行--sleep、yield對比

這篇小編想分享一下關於我們常見的sleep、yield方法的有什麼不同。 1、sleep:執行緒睡眠,如果我們需要讓當前正在執行的執行緒暫停一段時間,並進入阻塞狀態,就可以通過呼叫sleep方法來實現。線上程進入阻塞狀態後,再sleep 這段時間內,該執行緒不會獲得執行的機

【OpenMP】執行計算過程中任務排程問題

對於OpenMP的任務排程主要針對於並行的for迴圈,當每一次迴圈過程中的計算時間複雜度不一致的時候,簡單的給每一個執行緒分配相同次數的迭代,會導致執行緒計算負載不均衡。不僅如此,對於實時計算的計算機,每一個核心的佔用率是不一樣的。針對該問題,OpenMP中給出

如何設定HFSS13執行計算

剛學習電磁場專業的同學們或者業餘愛好者們,必須會用的軟體之一就是Ansoft HFSS,你們買到的書籍無非是教你如何建立或者匯入設計模型,指定模型材料屬性,正確分配模型的邊界條件和激勵,以及準確定義求解設定等等。         HFSS跑的快慢那是你的事。好多使用者不清楚

Chromium執行模型設計和實現分析

       Chromium除了遠近聞名的多程序架構之外,它的多執行緒模型也相當引人注目的。Chromium的多程序架構是為了解決網頁的穩定性問題,而多執行緒模型則是為了解決網頁的卡頓問題。為了達到這個目的,Chromium的多執行緒模型是基於非同步通訊的。也就是說,一個執

執行效能及效率問題

一、[多執行緒概要]   隨著計算機技術的發展,程式設計模型也越來越複雜多樣化。但多執行緒程式設計模型是目前計算機系統架構的最終模型。隨著CPU主頻的不斷攀升,X86架構的硬體已經成為瓶,在這種架構的CPU主頻最高為4G。事實上目前3.6G主頻的CPU已經接近了頂峰。   如果不能從根本上更新當前CPU的架

java程式設計之執行計算

/* *編寫兩個執行緒: *第一個執行緒計算2-1000000之間的質數及個數 *第二個執行緒計算1000000-2000000之間的質數 及個數 */ class myThread extends Thread{ private int a,b; //

【小家Java】Future、FutureTask、CompletionService、CompletableFuture解決執行併發中歸集問題的效率對比

相關閱讀 【小家java】java5新特性(簡述十大新特性) 重要一躍 【小家java】java6新特性(簡述十大新特性) 雞肋升級 【小家java】java7新特性(簡述八大新特性) 不溫不火 【小家java】java8新特性(簡述十大新特性) 飽受讚譽 【小家java】java9

Python中單執行執行程序的效率對比實驗

Python是執行在直譯器中的語言,查詢資料知道,python中有一個全域性鎖(GIL),在使用多程序(Thread)的情況下,不能發揮多核的優勢。而使用多程序(Multiprocess),則可以發揮多核的優勢真正地提高效率。 對比實驗 資料顯示,如果多執行緒的程序是CPU密集型的,那多執行緒並不能有多少

iOS的三種執行技術 對比分析

1 #pragma mark 模仿下載網路影象 2 - (IBAction)operationDemo3:(id)sender 3 { 4 // 1. 下載 5 NSBlockOperation *op1 = [NSBlockOperation blockOperationWit

Python 程序和執行效率對比

import time from threading import Thread from multiprocessing import Process def f1(): # time.sleep(1) #io密集型 # 計算型: n = 10 for i in