[問題] C++ 函式速度受到影響
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
g++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
STL
問題(Question):
目前在實做一個剖析電路檔(Verilog), 之後利用演算法進行分割的程式。
整個程式已經完成了大部分,目前再進行優化的動作。
# 針對這個函式
因為讀的檔案,大的檔案約有27mb,約200w個token要處理。
然後建成我需要的資料結構,大都使用vector動態增加。
我實做好這部分的功能,姑且稱為readline函式。
獨立執行時,約30s可以parse完整個檔案並建好資料結構~
但是當我將readline函式併入我整個project的其中一個流程時,
在readline之前有parse兩個檔案,也建了其他的資料結構,約1s完成。
跑到readline這部分的程式變得非常的慢,可能超過3000s還無法順利完成。
餵入的資料(Input):
gate-level verilog,一個Circuit,
簡單的說,就是一個文字檔,類似C的另一種程式語言。
預期的正確結果(Expected Output):
結果正確,但是想知道為何合併後速度變得這麼慢。QQ
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
主程式 ----------------
程式A
程式B
程式C
程式D
程式E
程式F
------------------------
主程式-------------------
readline程式 30s
-------------------------
單獨直接執行剖析電路檔30s。
加入主程式
主程式 ----------------
程式A 0.5s
程式B 0.5s
readline程式 3000s →同樣的程式碼,速度慢非常多。
程式C
程式D
程式E
程式F
------------------------
補充說明(Supplement):
想知道問題出在哪裡?
目前想到的是可能大程式預先把記憶體都用完了,
另外問,該怎麼順利將之前AB執行後,用不到的記憶體從vector釋出。
我的vector要建成兩個表,表裡面儲存是一個類別。
一個表約40w個欄位,另一個約200w個欄位。
這個兩個表是我之後要做為演算法查表用的資料。
非常感謝~~~
雖然有嘗試把類別改成類別指標存取,但是速度似乎提升的不夠顯著。
所以想了解個別執行與合併執行程式,主要會拖慢的原因是甚麼。
--
生命是一場最美好的旅行。
http://ramihaha.pixnet.net/blog
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.16.167
→
06/27 15:49, , 1F
06/27 15:49, 1F
→
06/27 15:50, , 2F
06/27 15:50, 2F
→
06/27 15:51, , 3F
06/27 15:51, 3F
→
06/27 16:45, , 4F
06/27 16:45, 4F
→
06/27 17:52, , 5F
06/27 17:52, 5F
→
06/27 17:52, , 6F
06/27 17:52, 6F
推
06/27 18:13, , 7F
06/27 18:13, 7F
→
06/27 18:14, , 8F
06/27 18:14, 8F
→
06/27 18:15, , 9F
06/27 18:15, 9F
推
06/28 22:03, , 10F
06/28 22:03, 10F
推
06/28 22:24, , 11F
06/28 22:24, 11F
推
06/28 22:26, , 12F
06/28 22:26, 12F
推
06/28 22:27, , 13F
06/28 22:27, 13F
→
06/29 17:58, , 14F
06/29 17:58, 14F
→
06/29 17:59, , 15F
06/29 17:59, 15F
→
06/29 18:00, , 16F
06/29 18:00, 16F
→
07/01 15:58, , 17F
07/01 15:58, 17F