基準測試中避免隨機數據,因爲它可能會導致性能差異。如果您必須有隨機數據,請確保使用種子值。
您很少需要創建自定義生成器類。在幾乎所有的用法中,您將使用for-comprehensions生成器來爲基準創建自定義數據值。請參閱以下文檔鏈接。
ScalaMeter中的生成器與ScalaCheck中的生成器不同。他們不只是產生一些隨機值。它們生成一組明確定義的值,並將其輸入基準。通常,這些值遵循一定的模式,例如數據的大小。例如,如果您正在對List
操作進行基準測試,則生成器通常會生成不同大小的列表。
你不說如何創建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解析,
我覺得你的痛苦,但你的問題不是很清楚你實際要問什麼。你能更具體一點嗎?你究竟需要知道什麼? – 2014-09-26 07:12:39
我期待實現scalameter的特性嗎?還是我使用組合的發電機?我會怎麼做?我真的不知道如何使用scalameter中的參數(主要是如何實現)以及組合發生器如何工作(主要是任務支持) – 2014-09-28 23:12:12
我仍然不知道你在問什麼,特別是。你有什麼嘗試?你卡在哪裏?如果您提出具體問題,那麼SO會更好,而不是像您這樣的廣泛問題 – 2014-09-29 06:28:26