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