@@ -35,11 +35,13 @@ def heading(s: str) -> None:
35
35
print ()
36
36
37
37
38
- def build_mypy (target_dir : str ) -> None :
38
+ def build_mypy (target_dir : str , multi_file : bool ) -> None :
39
39
env = os .environ .copy ()
40
40
env ["CC" ] = "clang"
41
41
env ["MYPYC_OPT_LEVEL" ] = "2"
42
42
env ["PYTHONHASHSEED" ] = "1"
43
+ if multi_file :
44
+ env ["MYPYC_MULTI_FILE" ] = "1"
43
45
cmd = [sys .executable , "setup.py" , "--use-mypyc" , "build_ext" , "--inplace" ]
44
46
subprocess .run (cmd , env = env , check = True , cwd = target_dir )
45
47
@@ -110,6 +112,12 @@ def main() -> None:
110
112
action = "store_true" ,
111
113
help = "measure incremental run (fully cached)" ,
112
114
)
115
+ parser .add_argument (
116
+ "--multi-file" ,
117
+ default = False ,
118
+ action = "store_true" ,
119
+ help = "compile each mypy module to a separate C file (reduces RAM use)" ,
120
+ )
113
121
parser .add_argument (
114
122
"--dont-setup" ,
115
123
default = False ,
@@ -127,9 +135,9 @@ def main() -> None:
127
135
parser .add_argument (
128
136
"-j" ,
129
137
metavar = "N" ,
130
- default = 8 ,
138
+ default = 4 ,
131
139
type = int ,
132
- help = "set maximum number of parallel builds (default=8) " ,
140
+ help = "set maximum number of parallel builds (default=4) -- high numbers require a lot of RAM! " ,
133
141
)
134
142
parser .add_argument (
135
143
"-r" ,
@@ -155,6 +163,7 @@ def main() -> None:
155
163
args = parser .parse_args ()
156
164
incremental : bool = args .incremental
157
165
dont_setup : bool = args .dont_setup
166
+ multi_file : bool = args .multi_file
158
167
commits = args .commit
159
168
num_runs : int = args .num_runs + 1
160
169
max_workers : int = args .j
@@ -185,7 +194,9 @@ def main() -> None:
185
194
print ("(This will take a while...)" )
186
195
187
196
with ThreadPoolExecutor (max_workers = max_workers ) as executor :
188
- futures = [executor .submit (build_mypy , target_dir ) for target_dir in target_dirs ]
197
+ futures = [
198
+ executor .submit (build_mypy , target_dir , multi_file ) for target_dir in target_dirs
199
+ ]
189
200
for future in as_completed (futures ):
190
201
future .result ()
191
202
0 commit comments