2012-05-18 27 views
0

只是一個普遍的性能問題。對於建立撲克牌手的程序來說,1-7秒是一個很好的籌碼時間,對撲克牌進行排序,然後分析並返回每個撲克牌類型,例如直線,沖刷等等。如何知道我的代碼在執行時間方面是否高效?

我正在生成一隻手,直到它返回一個手型,在這個過程中我將它從最低級排序到最高級。我爲每個撲克牌手都這樣做。所以你可以想象產生一個皇家同花順和同花順,它必須在打擊之前產生數千手。

我如何知道分析所花費的時間是否合理?

+0

這是一個很難回答的問題,沒有任何特定的代碼。我會說這太長了,雖然... – kentcdodds

+2

無需說,而不必看代碼。這高度依賴於語言,硬件和實施。 –

+0

我跑了25次,平均3秒左右,沒有好處? – user1051043

回答

1

不...撲克沒有太多的選擇,沒有理由讓這樣的分析儀採取任何接近一秒,更少7.大約7年前,我寫了一個啤酒(C的德州撲克遊戲)手機。它會立即產生雙手(大約)。如果你使用的是java,那麼無論是現代手機還是服務器,你都可能運行一個相當現代的(讀取速度很快的)機器,生成和評估撲克牌手並不是一個耗時的企業。

+0

我會更願意發送所有文件的zip文件。我有很多課程,所以不可能在這裏展示。 – user1051043

+1

我不打算檢查你的代碼,但這裏明顯的解決方案是這樣的:從52張牌組中取出牌(假設你的套牌只是一個卡陣列,這將閃電般快)。儘量找到最好的牌(從最好到最差的順序),如果他們有沖洗,就沒有必要尋找直線。再一次,每隻手應該不知不覺地快速計算,並且只有9隻手,所以如果你的程序正在採取任何可感知的時間,那麼你正在做一些非常錯誤的事情。 –

+0

不,這是事情,我正在生成一隻手,直到它返回一個手型,在這個過程中我將它從最低級排序到最高級。我爲每個撲克牌手都這樣做。所以你可以想象產生一個皇家同花順和同花順,它必須在打擊之前產生數千手。 – user1051043

2

這太長了我會說。除非你有一個複雜的圖形用戶界面...我建議把性能相關的問題提交到CodeReview。給他們一個好的SSCCE,或者至少有一兩個你關注的方法,你很可能會得到很好的迴應。

此外,您可能會考慮基準。這是一個很好的questionCaliper是一個非常棒的基準測試框架,我建議您也考慮一下(我在CodeReview上了解到它; D)

相關問題