Project: Individual Project - Word frequency program----11061192zmx
?
?
Description & Requirements
http://www.cnblogs.com/jiel/p/3311400.html
?
項目時間估計
理解項目要求: 1小時
構建項目邏輯: 1小時
查閱相關資料: 1小時
編寫&調試程序: 2小時
樣例測試&功能完善: ?1小時
項目效率分析: 1小時
項目優化: 2小時
總結&提交: 1小時
?
項目實際完成時間
實際完成時間很是蛋疼,題目意思不難理解,實現起來也不難,本著先實現功能不考慮時間的原則寫了用c++里的map實現了一下,但發現debug模式下那個速度簡直不能看,但這時已經離截止日期很近了,又有些錯誤,這兩天花在改代碼測數據上的時間很多。。。主要是數據如果不大沒有代表性,如果大了的話又不好調試,很是蛋疼。。。
寫代碼:n小時
調試: ? n小時
測試數據按照我對題目的理解應該是能輸出正確結果的,在release模式下100+M的小說大約用了30s左右,相對于薛大神的12s還是8s簡直就是奇慢無比,詳細的性能分析寫在后面。
?
開發過程
開發過程其實不能算充滿艱辛,但做無用功的時間太多了。一開始先花了好多時間翻了翻C++Primer看了看容器什么,然后沒看清楚題意沒有遞歸遍歷文件,最后功能實現后再把遞歸遍歷部分加進去導致代碼很亂,接著就是一些不知道從哪里冒出來的問題(運行時間過慢等,估計是我不小心點到了debug模式然后沒有發現),因為這已經花了很多時間了,實在是不耐煩了,就直接重寫了一遍代碼,算是一個階段完成了。但后來和小伙伴們對數據的時候竟然發現對題意理解錯了,最后改了一下覺得應該沒問題了。。??傊麄€過程充滿了艱辛,實在是無力了。。
關于算法實現,我是用一個word_list來存儲單詞,用word_com來存儲單詞統一的形式(如file和File我在word_com里都存成FILE)。最后根據word_com里的頻率將word_list里的單詞排個序,將每個單詞的最小字典序的形式提出來,這時單詞的順序不是按照題目要求的字典序的,而是按照真正字典里的順序,這里再對其進行一次字典序的排序,輸出結果。
性能分析
?由于是直接用map做的,覺得map的insert操作應該比下標創建要快一點,于是在加單詞的時候還加了hash。。其實應該是沒什么區別的(只是優化了復雜度的常數,最后性能分析結果也顯示沒優化多少。。。)
可以看到,100+M的數據跑了30s,而且中間cpu使用率的曲線也很詭異。。
?
占有樣本數比較多的函數是pass,這是用來遍歷文件夾的,里面調用了addword是向map里面加單詞記錄頻率的。
?
?
總結
真的是學到了很多,主要是調試方面提高了許多心理承受能力。
由于看了幾遍c++primer里容器的介紹,對c++里各種容器也算有了個詳細的了解,方便以后使用。
學會了如何遍歷文件夾,以及對一些函數的運行速度有了更深的了解。
總的來說是一次很不錯的實踐。完
轉載于:https://www.cnblogs.com/z-mac/p/3317104.html
總結
以上是生活随笔為你收集整理的Project: Individual Project - Word frequency program----11061192zmx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript:零星知识
- 下一篇: HALCON基础知识