diff --git a/core/encoding/base32/base32.odin b/core/encoding/base32/base32.odin index 3dfa800a5..9949a5e4f 100644 --- a/core/encoding/base32/base32.odin +++ b/core/encoding/base32/base32.odin @@ -2,34 +2,34 @@ package base32 // @note(zh): Encoding utility for Base32 // A secondary param can be used to supply a custom alphabet to -// @link(encode) and a matching decoding table to @link(decode). +// @link(encode) and a matching decoding table to @link(decode). // If none is supplied it just uses the standard Base32 alphabet. // Incase your specific version does not use padding, you may // truncate it from the encoded output. ENC_TABLE := [32]byte { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', - 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '2', '3', '4', '5', '6', '7' }; PADDING :: '='; DEC_TABLE := [?]u8 { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, - 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -41,7 +41,7 @@ encode :: proc(data: []byte, ENC_TBL := ENC_TABLE, allocator := context.allocato } @private -_encode :: inline proc "contextless"(out, data: []byte, ENC_TBL := ENC_TABLE, allocator := context.allocator) { +_encode :: proc(out, data: []byte, ENC_TBL := ENC_TABLE, allocator := context.allocator) { out := out; data := data; @@ -142,4 +142,4 @@ decode :: proc(data: string, DEC_TBL := DEC_TABLE, allocator := context.allocato outi += 5; } return out; -} \ No newline at end of file +} diff --git a/src/checker.cpp b/src/checker.cpp index ae9a6e56e..ef7d72e65 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -4405,6 +4405,7 @@ void check_parsed_files(Checker *c) { error(token, "Undefined entry point procedure 'main'"); } } + TIME_SECTION("type check finish"); #undef TIME_SECTION } diff --git a/src/main.cpp b/src/main.cpp index daf57a7c8..f430c5f68 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1174,58 +1174,84 @@ void show_timings(Checker *c, Timings *t) { total_file_size += file->tokenizer.end - file->tokenizer.start; } } -#if 1 - timings_print_all(t); -#else - { - timings_print_all(t); - gb_printf("\n"); - gb_printf("Total Lines - %td\n", lines); - gb_printf("Total Tokens - %td\n", tokens); - gb_printf("Total Files - %td\n", files); - gb_printf("Total Packages - %td\n", packages); - gb_printf("Total File Size - %td\n", total_file_size); - gb_printf("\n"); - } - { - TimeStamp ts = t->sections[0]; - GB_ASSERT(ts.label == "parse files"); - f64 parse_time = time_stamp_as_s(ts, t->freq); - gb_printf("Parse pass\n"); - gb_printf("LOC/s - %.3f\n", cast(f64)lines/parse_time); - gb_printf("us/LOC - %.3f\n", 1.0e6*parse_time/cast(f64)lines); - gb_printf("Tokens/s - %.3f\n", cast(f64)tokens/parse_time); - gb_printf("us/Token - %.3f\n", 1.0e6*parse_time/cast(f64)tokens); - gb_printf("bytes/s - %.3f\n", cast(f64)total_file_size/parse_time); - gb_printf("us/bytes - %.3f\n", 1.0e6*parse_time/cast(f64)total_file_size); - gb_printf("\n"); + timings_print_all(t); + if (build_context.show_more_timings) { + { + gb_printf("\n"); + gb_printf("Total Lines - %td\n", lines); + gb_printf("Total Tokens - %td\n", tokens); + gb_printf("Total Files - %td\n", files); + gb_printf("Total Packages - %td\n", packages); + gb_printf("Total File Size - %td\n", total_file_size); + gb_printf("\n"); + } + { + TimeStamp ts = {}; + for_array(i, t->sections) { + TimeStamp s = t->sections[i]; + if (s.label == "parse files") { + ts = s; + break; + } + } + GB_ASSERT(ts.label == "parse files"); + + f64 parse_time = time_stamp_as_s(ts, t->freq); + gb_printf("Parse pass\n"); + gb_printf("LOC/s - %.3f\n", cast(f64)lines/parse_time); + gb_printf("us/LOC - %.3f\n", 1.0e6*parse_time/cast(f64)lines); + gb_printf("Tokens/s - %.3f\n", cast(f64)tokens/parse_time); + gb_printf("us/Token - %.3f\n", 1.0e6*parse_time/cast(f64)tokens); + gb_printf("bytes/s - %.3f\n", cast(f64)total_file_size/parse_time); + gb_printf("MiB/s - %.3f\n", cast(f64)(total_file_size/parse_time)/(1024*1024)); + gb_printf("us/bytes - %.3f\n", 1.0e6*parse_time/cast(f64)total_file_size); + + gb_printf("\n"); + } + { + TimeStamp ts = {}; + TimeStamp ts_end = {}; + for_array(i, t->sections) { + TimeStamp s = t->sections[i]; + if (s.label == "type check") { + ts = s; + } + if (s.label == "type check finish") { + GB_ASSERT(ts.label != ""); + ts_end = s; + break; + } + } + GB_ASSERT(ts.label != ""); + GB_ASSERT(ts_end.label != ""); + + ts.finish = ts_end.finish; + + f64 parse_time = time_stamp_as_s(ts, t->freq); + gb_printf("Checker pass\n"); + gb_printf("LOC/s - %.3f\n", cast(f64)lines/parse_time); + gb_printf("us/LOC - %.3f\n", 1.0e6*parse_time/cast(f64)lines); + gb_printf("Tokens/s - %.3f\n", cast(f64)tokens/parse_time); + gb_printf("us/Token - %.3f\n", 1.0e6*parse_time/cast(f64)tokens); + gb_printf("bytes/s - %.3f\n", cast(f64)total_file_size/parse_time); + gb_printf("MiB/s - %.3f\n", (cast(f64)total_file_size/parse_time)/(1024*1024)); + gb_printf("us/bytes - %.3f\n", 1.0e6*parse_time/cast(f64)total_file_size); + gb_printf("\n"); + } + { + f64 total_time = t->total_time_seconds; + gb_printf("Total pass\n"); + gb_printf("LOC/s - %.3f\n", cast(f64)lines/total_time); + gb_printf("us/LOC - %.3f\n", 1.0e6*total_time/cast(f64)lines); + gb_printf("Tokens/s - %.3f\n", cast(f64)tokens/total_time); + gb_printf("us/Token - %.3f\n", 1.0e6*total_time/cast(f64)tokens); + gb_printf("bytes/s - %.3f\n", cast(f64)total_file_size/total_time); + gb_printf("MiB/s - %.3f\n", cast(f64)(total_file_size/total_time)/(1024*1024)); + gb_printf("us/bytes - %.3f\n", 1.0e6*total_time/cast(f64)total_file_size); + gb_printf("\n"); + } } - { - TimeStamp ts = t->sections[1]; - GB_ASSERT(ts.label == "type check"); - f64 parse_time = time_stamp_as_s(ts, t->freq); - gb_printf("Checker pass\n"); - gb_printf("LOC/s - %.3f\n", cast(f64)lines/parse_time); - gb_printf("us/LOC - %.3f\n", 1.0e6*parse_time/cast(f64)lines); - gb_printf("Tokens/s - %.3f\n", cast(f64)tokens/parse_time); - gb_printf("us/Token - %.3f\n", 1.0e6*parse_time/cast(f64)tokens); - gb_printf("bytes/s - %.3f\n", cast(f64)total_file_size/parse_time); - gb_printf("us/bytes - %.3f\n", 1.0e6*parse_time/cast(f64)total_file_size); - gb_printf("\n"); - } - { - f64 total_time = t->total_time_seconds; - gb_printf("Total pass\n"); - gb_printf("LOC/s - %.3f\n", cast(f64)lines/total_time); - gb_printf("us/LOC - %.3f\n", 1.0e6*total_time/cast(f64)lines); - gb_printf("Tokens/s - %.3f\n", cast(f64)tokens/total_time); - gb_printf("us/Token - %.3f\n", 1.0e6*total_time/cast(f64)tokens); - gb_printf("bytes/s - %.3f\n", cast(f64)total_file_size/total_time); - gb_printf("us/bytes - %.3f\n", 1.0e6*total_time/cast(f64)total_file_size); - gb_printf("\n"); - } -#endif } void remove_temp_files(String output_base) {