<commit_before>
AlarmClock
==========
This gives the option to query whether a specified time period has expired. The utility is made to have a very low CPU clock cycle cost for the client compared to using StopWatch or std::chrono.

The implementation of AlarmClock was made to be  as accurate as possible, with the assumption that low CPU usage and cheap, CPU wise,  API calls are more important than absolute accuracy in terms of some extra microseconds of expiration overhead. 

Common expiration time overhead ranged from 50 - 150 microseconds on the current testing platform when the Alarm clock was checked for expiration in a continous loop. (which normally is not a good usage pattern)

The API usage can be found in: [[AlarmClock.h]](https://github.com/LogRhythm/StopWatch/blob/master/src/AlarmClock.h) and in [[AlarmClockTest.cpp]](https://github.com/LogRhythm/StopWatch/blob/master/test/AlarmClockTest.cpp)


StopWatch
=========

A timer class in C++ which wraps the std::chrono API, with the purpose of retrieving elapsed time since creation of the object or since the timing was restarted. 
Measurements are available in microseconds, milliseconds and seconds


ThreadSafeStopWatch
===================

A replacement for `thread_local StopWatch` on platforms that do not have the `thread_local` keyword accessible. It implements the `thread_local`  through a `lazy-barber` map access solution.
If `thread_local` is available on your platform then  `thread_local StopWatch` is likely a better choice than using the`ThreadSafeStopWatch`<commit_msg>code review adjustment : thanks Dan<commit_after>
AlarmClock
==========
This gives the option to query whether a specified time period has expired. The utility is made to have a very low CPU clock cycle cost for the client compared to using StopWatch or std::chrono.

The implementation of AlarmClock was made to be  as accurate as possible, with the assumption that low CPU usage and cheap, CPU-wise,  API calls are more important than absolute accuracy in terms of some extra microseconds of expiration overhead. 

Common expiration time overhead ranged from 50 - 150 microseconds on the current testing platform when the Alarm clock was checked for expiration in a continuous loop (which normally is not a good usage pattern).

The API usage can be found in: [[AlarmClock.h]](https://github.com/LogRhythm/StopWatch/blob/master/src/AlarmClock.h) and in [[AlarmClockTest.cpp]](https://github.com/LogRhythm/StopWatch/blob/master/test/AlarmClockTest.cpp)


StopWatch
=========

A timer class in C++ which wraps the std::chrono API, with the purpose of retrieving elapsed time since creation of the object or since the timing was restarted. 
Measurements are available in microseconds, milliseconds and seconds


ThreadSafeStopWatch
===================

A replacement for `thread_local StopWatch` on platforms that do not have the `thread_local` keyword accessible. It implements the `thread_local`  through a `lazy-barber` map access solution.
If `thread_local` is available on your platform then  `thread_local StopWatch` is likely a better choice than using the`ThreadSafeStopWatch`
{'fraction_non_alphanumeric': 0.07317849188673242, 'fraction_numerical': 0.003181673560292714, 'mean_word_length': 5.1647058823529415, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1132577', 'n_tokens_mistral': 802, 'n_tokens_neox': 760, 'n_words': 408}