Erlang檔案I O效能評測

2021-08-23 11:54:51 字數 1270 閱讀 6894

本測試主要目的是考察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...