More timing functions
This commit is contained in:
parent
6331a2bf79
commit
321c677da2
12 changed files with 184 additions and 129 deletions
39
timer.hpp
Normal file
39
timer.hpp
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
#include <x86intrin.h>
|
||||
#include "rtweekend.hpp"
|
||||
|
||||
|
||||
#define TIMED_BLOCK__(number, ...) timed_block timed_block_##Number(__COUNTER__, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)
|
||||
#define TIMED_BLOCK_(number, ...) TIMED_BLOCK__(number, ##__VA_ARGS__)
|
||||
#define TIMED_BLOCK(...) TIMED_BLOCK_(__LINE__, ##__VA_ARGS__)
|
||||
|
||||
struct debug_record
|
||||
{
|
||||
uint64_t cycles;
|
||||
uint64_t hit_count;
|
||||
const char *filename;
|
||||
const char *function_name;
|
||||
|
||||
uint32_t line_number;
|
||||
|
||||
};
|
||||
|
||||
extern debug_record debug_record_array[];
|
||||
|
||||
struct timed_block {
|
||||
// TODO: Thread safety
|
||||
debug_record *record;
|
||||
|
||||
timed_block(int counter, const char *filename, int line_number, const char *function_name, int hit_count = 1)
|
||||
{
|
||||
record = debug_record_array + counter;
|
||||
record->filename = filename;
|
||||
record->line_number = line_number;
|
||||
record->function_name = function_name;
|
||||
record->cycles -= __rdtsc();
|
||||
record->hit_count += hit_count;
|
||||
}
|
||||
~timed_block()
|
||||
{
|
||||
record->cycles += __rdtsc();
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue