2014-09-26 27 views
1

我目前正在試圖從一個數據庫中提取數據並對其執行操作的算法進行基準測試,該函數需要的時間稍長一點,然後我希望對其進行基準測試我可以監控任何性能提升(以及向客戶演示)。我的問題是,唯一的「記錄在案」的基準測試庫是scalameter,它並沒有深入到如何使用它。我對如何爲一個名爲'User'的自定義類生成一個生成器而生成隨機用戶作爲輸入,我很迷茫。其次,我不太確定基準測試如何與Scalameter配合使用,他們使用的參數類型究竟是什麼,以及您如何使用它。如何實現一個用於標量計的發生器

我是否正在尋找正確的方向?

+3

我覺得你的痛苦,但你的問題不是很清楚你實際要問什麼。你能更具體一點嗎?你究竟需要知道什麼? – 2014-09-26 07:12:39

+0

我期待實現scalameter的特性嗎?還是我使用組合的發電機?我會怎麼做?我真的不知道如何使用scalameter中的參數(主要是如何實現)以及組合發生器如何工作(主要是任務支持) – 2014-09-28 23:12:12

+0

我仍然不知道你在問什麼,特別是。你有什麼嘗試?你卡在哪裏?如果您提出具體問題,那麼SO會更好,而不是像您這樣的廣泛問題 – 2014-09-29 06:28:26

回答

0
  1. 基準測試中避免隨機數據,因爲它可能會導致性能差異。如果您必須有隨機數據,請確保使用種子值。

  2. 您很少需要創建自定義生成器類。在幾乎所有的用法中,您將使用for-comprehensions生成器來爲基準創建自定義數據值。請參閱以下文檔鏈接。

  3. ScalaMeter中的生成器與ScalaCheck中的生成器不同。他們不只是產生一些隨機值。它們生成一組明確定義的值,並將其輸入基準。通常,這些值遵循一定的模式,例如數據的大小。例如,如果您正在對List操作進行基準測試,則生成器通常會生成不同大小的列表。

  4. 你不說如何創建User,但只能說你隨機做。

所以,讓我們假設有一個函數newUser,它接受一個整數,並使用它來創建一個User

def newUser(seed: Int): User 

如果有大小User對象的任何概念,你可以使用種子來影響這個尺寸。例如,如果User對象具有name字段,則可以生成大小爲seed的名稱字段。如果大小影響操作的運行時間,這一點特別有用,因爲稍後您將看到對該圖的依賴關係。

User對象的生成器的類型爲Gen[User]。我們通過從種子發電機起動創建:

val seeds = Gen.range("seed")(0, 10, 1) 

該發電機包含種子整數從0直到10。我們用它來創建一個用戶生成器:

val users: Gen[User] = for (seed <- seeds) yield newUser(seed) 

此文檔中討論:

http://scalameter.github.io/home/gettingstarted/0.7/

節上發電機:

http://scalameter.github.io/home/gettingstarted/0.7/generators/index.html

Parameters總結在ScalaDoc,但你並不真的需要它們 - 而是使用gener作爲教程顯示的ator解析,

相關問題