Next: Hot potato, Previous: Examples, Up: Examples [Contents][Index]
One of the most common network performance benchmarks is a ping-pong latency test. Not surprisingly, such a test is straightforward to implement in coNCePTuaL:
# A ping-pong latency test written in coNCePTuaL Require language version "1.5". # Parse the command line. reps is "Number of repetitions of each message size" and comes from "--reps" or "-r" with default 1000. maxbytes is "Maximum number of bytes to transmit" and comes from "--maxbytes" or "-m" with default 1M. # Ensure the we have a peer with whom to communicate. Assert that "the latency test requires at least two tasks" with num_tasks>=2. # Perform the benchmark. For each msgsize in {0}, {1, 2, 4, ..., maxbytes} { for reps repetitions { task 0 resets its counters then task 0 sends a msgsize byte message to task 1 then task 1 sends a msgsize byte message to task 0 then task 0 logs the msgsize as "Bytes" and the median of elapsed_usecs/2 as "1/2 RTT (usecs)" } then task 0 computes aggregates } |
Note that the outer FOR
loop specifies two <range>s
(see Range
expressions). This is because ‘{0, 1, 2, 4, ...,
maxbytes}’ is not a geometric progression.
Hence, that incorrect <range> is split into the
singleton ‘{0}’ and the geometric progression
‘{1, 2, 4, ..., maxbytes}’.