本測試主要目的是考察erlang檔案i/o同c標準i/o之間具體的效能差異。
erlang中有普通檔案i/o和裸檔案i/o兩類操作,其中普通檔案i/o的檔案控制代碼是乙個程序id,因此可以從erlang節點網路的任意位置訪問該控制代碼;而裸檔案i/o的檔案控制代碼是乙個tuple結構,只在同一節點上開啟該檔案的程序內有效,無法跨程序跨節點訪問。一般來說裸檔案i/o速度要遠高於普通檔案i/o。
此外erlang rts還有一些選項能夠改善大i/o流量情況下的程序響應速度,這裡主要使用的是如下2個選項:
為此,評測時也進行了預設狀態(+k false +a 0)和調整後狀態(+k true +a 32)的i/o效能比較。
評測環境為公司發放的筆記本hp nx6320,intel duo t2400 1.83ghz(2 cores),1gb ram,60g sata hd。
測試用例分為順序讀寫和隨機讀寫2種,每種型別下分別進行引數調整前後的讀和寫時間測試:
測試資料檔案大小為100mb,i/o塊大小從1kb、2kb開始按2的倍數遞增至1024kb,以測試不同i/o塊大小對效能的影響。
使用erlang預設引數進行讀操作時,c標準i/o速度是erlang普通檔案i/o速度的~5076%,是erlang裸檔案i/o速度的~191%;增加上述的rts選項後erlang i/o速度基本沒有變化。圖表如下:
使用erlang預設引數進行寫操作時,c標準i/o速度是erlang普通檔案i/o速度的~92%,是erlang裸檔案i/o速度的~194%;增加上述的rts選項後,普通檔案i/o速度降低,裸檔案i/o速度提高,此時c標準i/o速度是erlang普通檔案i/o速度的~192%,是erlang裸檔案i/o速度的~124%。圖表如下:
使用erlang預設引數進行讀操作時,c標準i/o速度是erlang普通檔案i/o速度的~2556%,是erlang裸檔案i/o速度的125%;增加上述的rts選項後erlang i/o速度基本沒有變化。圖表如下:
使用erlang預設引數進行寫操作時,c標準i/o速度是erlang普通檔案i/o速度的~128%,是erlang裸檔案i/o速度的~62%;增加上述的rts選項後普通檔案i/o速度有所提高,但裸檔案i/o速度有所降低,此時c標準i/o速度是erlang普通檔案i/o速度的~125%,是erlang裸檔案i/o速度的~107%。圖表如下:
見附件中的 seq_rw.c.zip。
見附件中的rand_rw.c.zip。
見附件中的 seq_rw.erl.zip。
見附件中的 rand_rw.erl.zip。
見識Erlang網路IO能力
測試目的 比較c,c node.js,erlang網路tcp讀寫效能 測試環境 linux 測試條件 server為簡單的tcp echo伺服器,server和client執行在同一機器上,10000長連線,100活動連線 測試結果 c boost asio connect 10000,active...
c 效能評測工具
是gnu gnu binutils工具之一,預設情況下linux系統當中都帶有這個工具。編譯時新增 pg 選項 程式結束時生成 gmon.out 是迴圈程式 ctrl z 結束 生成分析報告 gprof b 二進位制程式 gmon.out report.txt gprof 不支援多執行緒應用 gpr...
Erlang效能分析工具
02 erlang原創 erlang,工具 toc 啟動cprof cprof start 暫停cprof cprof pause 退出cprof cprof stop 啟動eprof伺服器 eprof start 開始profiling eprof start profiling self 停止p...