Browse Source

Add extra information to `-show-more-timings`

gingerBill 5 years ago
parent
commit
89d824216a
3 changed files with 89 additions and 62 deletions
  1. 12 12
      core/encoding/base32/base32.odin
  2. 1 0
      src/checker.cpp
  3. 76 50
      src/main.cpp

+ 12 - 12
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;
-}
+}

+ 1 - 0
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
 }

+ 76 - 50
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");
-	}
-	{
-		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");
+	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");
+		}
 	}
-#endif
 }
 
 void remove_temp_files(String output_base) {