{"shas":[["a27c742e99e7b3b8448997a813650d1fe6e97b96","8bfd13cad0bc4b2ac41d9e235951e72c9b62c2aa@duomark.com","Convert dk_bench_server to a central benchmarking gen_server\n\nPreviously there were separate modules for each type of operation to benchmark.\nNow there are just two categories of benchmarks: message queuing and direct\nfunction calls.  They break down as follows:\n\nMessage Queueing Tests\n\ndk_bench_server:mq_raw(NumMsgs) -> timing proplist\ndk_bench_server:mq_raw(NumMsgs, TimesToRun) -> timing proplist\n\nThe message queue benchmarks use a fixed set of messages compiled into a\nconstant function as a source for a random list of messages. The NumMsgs\nparameter determines how many messages to send to another process, before\nunloading all the messages by receiving them from the mailbox queue. The\nTimesToRun parameter is used to run the same test repeatedly so that a\nseries of timings can be compared.\n\nThe benchmark spawns a new process, loads its queue, then signals the\nother process to unload the queue. These functions are implemented in\nthe mq_raw.erl module.\n\nDirect Function Tests\n\ndk_bench_server:fun_call(Fun, LoopCount) -> timing proplist\ndk_bench_server:fun_call(Fun, LoopCount, TimesTo_run) -> timing proplist\n\nThe valid Fun types currently available are:\n\n  fun_call:   Loop a function incrementing its argument\n  bin_comp:   Access specific bytes in a binary\n  tuple_inx:  Access specific elements in a tuple\n\nThe function benchmarks set up either function calls, or data structures\nand access to them, as timed tasks.\n\nThe benchmark spawns a process, initializes any args needed by the test,\nthen times the execution of the spawned process as it completes the task.\nEach of these functional tests is implemented in the fun_calls.erl\nmodule.","Jay Nelson"]],"ref":"refs/heads/master","size":1,"head":"a27c742e99e7b3b8448997a813650d1fe6e97b96","push_id":37753526}