34 ((
'bool',
'optional'), 8.321),
35 ((
'bool',
'repeated'), 0.033),
36 ((
'bytes',
'optional'), 0.809),
37 ((
'bytes',
'repeated'), 0.065),
38 ((
'double',
'optional'), 2.845),
39 ((
'double',
'repeated'), 0.143),
40 ((
'fixed32',
'optional'), 0.084),
41 ((
'fixed32',
'repeated'), 0.012),
42 ((
'fixed64',
'optional'), 0.204),
43 ((
'fixed64',
'repeated'), 0.027),
44 ((
'float',
'optional'), 2.355),
45 ((
'float',
'repeated'), 0.132),
46 ((
'int32',
'optional'), 6.717),
47 ((
'int32',
'repeated'), 0.366),
48 ((
'int64',
'optional'), 9.678),
49 ((
'int64',
'repeated'), 0.425),
50 ((
'sfixed32',
'optional'), 0.018),
51 ((
'sfixed32',
'repeated'), 0.005),
52 ((
'sfixed64',
'optional'), 0.022),
53 ((
'sfixed64',
'repeated'), 0.005),
54 ((
'sint32',
'optional'), 0.026),
55 ((
'sint32',
'repeated'), 0.009),
56 ((
'sint64',
'optional'), 0.018),
57 ((
'sint64',
'repeated'), 0.006),
58 ((
'string',
'optional'), 25.461),
59 ((
'string',
'repeated'), 2.606),
60 ((
'Enum',
'optional'), 6.16),
61 ((
'Enum',
'repeated'), 0.576),
62 ((
'Message',
'optional'), 22.472),
63 ((
'Message',
'repeated'), 7.766),
64 ((
'uint32',
'optional'), 1.289),
65 ((
'uint32',
'repeated'), 0.051),
66 ((
'uint64',
'optional'), 1.044),
67 ((
'uint64',
'repeated'), 0.079),
70 population = [item[0]
for item
in field_freqs]
71 weights = [item[1]
for item
in field_freqs]
74 if sys.version_info >= (3, 6):
75 return random.choices(population=population, weights=weights, k=k)
77 print(
"WARNING: old Python version, field types are not properly weighted!")
78 return [random.choice(population)
for _
in range(k)]
80 with open(base +
"/100_msgs.proto",
"w")
as f:
81 f.write(
'syntax = "proto3";\n')
82 f.write(
'package upb_benchmark;\n')
83 f.write(
'message Message {}\n')
84 for i
in range(2, 101):
85 f.write(
'message Message{i} {{}}\n'.
format(i=i))
87 with open(base +
"/200_msgs.proto",
"w")
as f:
88 f.write(
'syntax = "proto3";\n')
89 f.write(
'package upb_benchmark;\n')
90 f.write(
'message Message {}\n')
91 for i
in range(2, 501):
92 f.write(
'message Message{i} {{}}\n'.
format(i=i))
94 with open(base +
"/100_fields.proto",
"w")
as f:
95 f.write(
'syntax = "proto2";\n')
96 f.write(
'package upb_benchmark;\n')
97 f.write(
'enum Enum { ZERO = 0; }\n')
98 f.write(
'message Message {\n')
100 random.seed(a=0, version=2)
102 field_type, label = field
103 f.write(
' {label} {field_type} field{i} = {i};\n'.
format(i=i, label=label, field_type=field_type))
107 with open(base +
"/200_fields.proto",
"w")
as f:
108 f.write(
'syntax = "proto2";\n')
109 f.write(
'package upb_benchmark;\n')
110 f.write(
'enum Enum { ZERO = 0; }\n')
111 f.write(
'message Message {\n')
113 random.seed(a=0, version=2)
115 field_type, label = field
116 f.write(
' {label} {field_type} field{i} = {i};\n'.
format(i=i, label=label,field_type=field_type))