簡體   English   中英

C 幾次讀入后程序變慢

[英]C Program slowing down after a couple read-ins

所以我必須為 class 編寫一個 C 程序,它解決了一個像游戲一樣的連接四,粗略地說解決了相同顏色的棋子的匹配,讓上面的棋子掉下來,然后再次檢查匹配,如果沒有找到匹配它下降下一個片等。

我給定的輸入是一個文本文件,其中每一行都包含有關顏色和 x 位置的信息,該位置應該是棋子掉落的位置。 我的實現基於 AVL 樹,我的程序可以很好地處理大約 2.000.000 行的輸入,並在大約 3 秒內解決它。 我必須解決的一個更大的示例文件大約有 2.600.000 行長,但不會終止。 該程序每秒讀取大約 1.000.000 行,但在大約 2.000.000 標記之后它的速度大大降低並且每秒僅讀取 100 行。

它是我第一個“更大”的項目之一,大約有 900 行代碼,所以我不認為將它發布在這里有什么意義(除非有人真的想看到它)

我真的不知道原因可能是什么,所以也許你們中的某個人有想法或者可以指出我必須注意的方向。

添加帶有時間戳的日志記錄以發現減速發生的位置。 您需要隔離有性能問題的代碼。

變得更好的第一步是衡量你目前所處的位置。 一旦您知道當前過程需要多長時間,您就可以決定您所做的更改是有幫助、有害還是沒有改變。

有廣闊的軟件優化世界,四處尋找昂貴的循環。 閱讀大哦符號。 如果您有一個循環處理一個處理循環 O(n^3) 的循環,那么當每個循環為一百萬時,100 次迭代看起來很快的循環可能會顯着減慢。

如果你有一個性能分析器,它可以幫助組織它創建的日志中的時間戳,以便突出顯示花費最多時間的代碼。 在這種情況下,很多時候發生的情況是,開始時看起來足夠好的東西一旦開始擴展就不夠好。

沒有人說您必須將日志添加到源代碼的每一行。 那可能是壓倒性的。 弄清楚您不必關注的內容可能會非常有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM