Which library procedure returns the number of milliseconds elapsed since midnight?

View timers.chpl on GitHub

This primer demonstrates the use of a Timer from the Time module.

Use the Time standard module to bring its symbols into scope.

The quiet configuration constant is set to false when testing (via start_test) so that this test is deterministic.

config const quiet: bool = false;

A Timer can be used like a stopwatch to time portions of code.

To time a procedure, start the timer before calling the procedure and stop it afterwards. Here, we will time the sleep procedure, also defined in the Time module.

t.start();
sleep(1);
t.stop();

To report the time, use the elapsed() method. By default, the elapsed method reports time in seconds.

if !quiet then
  writeln("A. ", t.elapsed(), " seconds");

The elapsed time can also be checked in units other than seconds. The supported units are: microseconds, milliseconds, seconds, minutes, hours.

if !quiet then
  writeln("B. ", t.elapsed(TimeUnits.milliseconds), " milliseconds");

The Timer can be started again to accumulate additional time.

t.start();
sleep(1);
t.stop();
if !quiet then
  writeln("C. ", t.elapsed(TimeUnits.microseconds), " microseconds");

To start the Timer over at zero, call the clear method.

t.clear();
writeln("D. ", t.elapsed(), " seconds");

The timer can be checked while still running. This can be used to time multiple events. Here, the time taken by each iteration of the loop is saved into the iterationTimes array.

config const n = 5;
var iterationTimes: [1..n] real;
t.start();
for i in 1..n {
  var startTime = t.elapsed(TimeUnits.microseconds);
  //
  // This code will be timed n times.
  //
  iterationTimes(i) = t.elapsed(TimeUnits.microseconds) - startTime;
}
t.stop();

Finally, a lighter-weight, but less flexible, way of doing timings is to use the procedure: getCurrentTime(unit: TimeUnits): real

It returns the number of units (seconds by default) that have passed since midnight as a floating-point value. (Note that this makes it not particularly useful for timing things that might run across midnight). As a simple example, we can use the following idiom to time the number of seconds something will take:

const start = getCurrentTime();
sleep(1);
const elapsed = getCurrentTime() - start;

if !quiet then
  writeln("E. ", elapsed, " seconds");

For more information on Chapel’s timing capabilities, refer to the Time section of the Standard Modules online documentation.

Which library procedure generates a 32 bit pseudorandom integer in a caller specified range?

RandomRange - Generates a pseudorandom integer within a specified range. ReadChar - Reads a single character from standard input. ReadHex - Reads a 32-bit hexadecimal integer from standard input, terminated by the Enter key.

What type of tool can convert arm assembly to x86 assembly?

What type of tool can convert ARM Assembly to x86 Assembly? Architecture's instructions are directly executed by the CPU. A program that combines object files into an executable program is called a linker .

What instruction would I use to save the current value of the flags register?

What instruction would I use to save the current value of the flags register? Mechanically speaking, the CALL instruction pushes its return address on the stack and copies the called procedure's address into the instruction pointer.

When an argument is passed by value A copy of the address is pushed on the stack?

When an argument is passed by value, a copy of the address is pushed on the stack. An argument passed by reference consists of the offset of an object. 1001 0101 0101 is an ODD parity 12 bit Hamming code that contains a single-bit error.