2.7.1 - GetHostTick | LabJack
 
« Close

Datasheets and User Guides

App Notes

Software & Driver

 

2.7.1 - GetHostTick

Queries the host system's steady (monotonic) clock, preferentially with high precision.

Syntax

LJM_LONG_LONG_RETURN LJM_GetHostTick()

Returns

The current clock tick in microseconds, as a 64-bit integer. Resolution may vary.

On Windows, sleep states (such as standby, hibernate, or connected standby) do not affect LJM_GetHostTick. Other platforms should be manually tested.

Compatibility

Some development environments can not handle the 64-bit return value. In such cases use LJM_GetHostTick32Bit which uses two 32-bit parameters to return the clock tick.

Example

[C/C++] Measure how long an operation takes.

double value;
long long time0 = LJM_GetHostTick();
err = LJM_eReadName(handle, "SERIAL_NUMBER", &value);
long long time1 = LJM_GetHostTick();
ErrorCheck(err, "LJM_eReadName");
printf("LJM_eReadName took %lld microseconds.\n", time1 - time0);

Device I/O times can vary greatly, but this prints something like:

LJM_eReadName took 338 microseconds.

Determining What's Slow

There are a number of spots in your code that could be incurring a delay. These include:

  • Communication with a LabJack device
  • Communication with other devices
  • Other I/O
  • Graphics
  • CPU-intensive tasks

If your loop is too slow, try timing which part of the loop is slow. A good way to do this is to measure two sections: how long a section of code takes and how long the entire loop takes. Then, output both times and compare.

With pseudo-C code this could look like the following:

long long tloop = 0;
for (...) {
    long long t0 = LJM_GetHostTick();
    // The section under test goes here
    long long t1 = LJM_GetHostTick();

    if (tloop != 0) {
        printf("The code section took %lld microseconds;", t1 - t0);
        printf(" the whole loop took %lld microseconds\n", t1 - tloop);
    }
    tloop = t1;
}

After the first loop, this uses the second GetHostTick and a temporary variable to measure total loop time.

Each line shows how long the code section took compared to the whole loop:

The code section took 370 microseconds; the whole loop took 378 microseconds
The code section took 325 microseconds; the whole loop took 333 microseconds
...