diff options
author | Paul J. Davis <paul.joseph.davis@gmail.com> | 2017-06-28 10:58:34 -0500 |
---|---|---|
committer | Paul J. Davis <paul.joseph.davis@gmail.com> | 2017-07-19 11:11:42 -0500 |
commit | 0737d4a6c5e11affaca6d89657bede930ef86b7b (patch) | |
tree | 066c081420ffa34d838793a930ab4076b0fe05e4 | |
parent | 345d82b288166f6b53d6a83c541b5e565f29d2c3 (diff) | |
download | couchdb-0737d4a6c5e11affaca6d89657bede930ef86b7b.tar.gz |
TMP: Simple benchmark script
-rw-r--r-- | src/ddoc_cache/src/ddoc_cache_speed.erl | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/ddoc_cache/src/ddoc_cache_speed.erl b/src/ddoc_cache/src/ddoc_cache_speed.erl new file mode 100644 index 000000000..38cd0b990 --- /dev/null +++ b/src/ddoc_cache/src/ddoc_cache_speed.erl @@ -0,0 +1,61 @@ +-module(ddoc_cache_speed). + +-export([ + go/1, + recover/1 +]). + + +-define(RANGE, 1000). + + +go(WorkerCount) when is_integer(WorkerCount), WorkerCount > 0 -> + spawn_workers(WorkerCount), + report(). + + +recover(DbName) -> + {ok, {stuff, DbName}}. + + +spawn_workers(0) -> + ok; + +spawn_workers(WorkerCount) -> + Self = self(), + WorkerDb = list_to_binary(integer_to_list(WorkerCount)), + spawn(fun() -> + do_work(Self, WorkerDb, 0) + end), + spawn_workers(WorkerCount - 1). + + +do_work(Parent, WorkerDb, Count) when Count >= 25 -> + Parent ! {done, Count}, + do_work(Parent, WorkerDb, 0); + +do_work(Parent, WorkerDb, Count) -> + {ok, _} = ddoc_cache:open_custom(WorkerDb, ?MODULE), + do_work(Parent, WorkerDb, Count + 1). + + +report() -> + report(os:timestamp(), 0). + + +report(Start, Count) -> + Now = os:timestamp(), + case timer:now_diff(Now, Start) of + N when N > 1000000 -> + {_, MQL} = process_info(whereis(ddoc_cache_lru), message_queue_len), + io:format("~p ~p~n", [Count, MQL]), + report(Now, 0); + _ -> + receive + {done, Done} -> + report(Start, Count + Done) + after 100 -> + report(Start, Count) + end + end. + |