Commit 5c5022b
authored
Use a fraction internally in the _PyTime API to reduce the risk of
integer overflow: simplify the fraction using Greatest Common
Divisor (GCD). The fraction API is used by time functions:
perf_counter(), monotonic() and process_time().
For example, QueryPerformanceFrequency() usually returns 10 MHz on
Windows 10 and newer. The fraction SEC_TO_NS / frequency =
1_000_000_000 / 10_000_000 can be simplified to 100 / 1.
* Add _PyTimeFraction type.
* Add functions:
* _PyTimeFraction_Set()
* _PyTimeFraction_Mul()
* _PyTimeFraction_Resolution()
* No longer check "numer * denom <= _PyTime_MAX" in
_PyTimeFraction_Set(). _PyTimeFraction_Mul() uses _PyTime_Mul()
which handles integer overflow.
1 parent 05a370a commit 5c5022b
File tree
3 files changed
+130
-107
lines changed- Include/internal
- Modules
- Python
3 files changed
+130
-107
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
253 | 253 | | |
254 | 254 | | |
255 | 255 | | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | 256 | | |
264 | 257 | | |
265 | 258 | | |
| |||
355 | 348 | | |
356 | 349 | | |
357 | 350 | | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
358 | 377 | | |
359 | 378 | | |
360 | 379 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | 72 | | |
92 | 73 | | |
93 | 74 | | |
| |||
96 | 77 | | |
97 | 78 | | |
98 | 79 | | |
99 | | - | |
| 80 | + | |
100 | 81 | | |
101 | 82 | | |
102 | 83 | | |
103 | | - | |
| 84 | + | |
104 | 85 | | |
105 | 86 | | |
106 | 87 | | |
| |||
174 | 155 | | |
175 | 156 | | |
176 | 157 | | |
177 | | - | |
| 158 | + | |
| 159 | + | |
178 | 160 | | |
179 | 161 | | |
180 | | - | |
| 162 | + | |
181 | 163 | | |
182 | 164 | | |
183 | 165 | | |
| |||
189 | 171 | | |
190 | 172 | | |
191 | 173 | | |
192 | | - | |
| 174 | + | |
193 | 175 | | |
194 | 176 | | |
195 | 177 | | |
| |||
1257 | 1239 | | |
1258 | 1240 | | |
1259 | 1241 | | |
1260 | | - | |
| 1242 | + | |
1261 | 1243 | | |
1262 | 1244 | | |
1263 | 1245 | | |
| |||
1266 | 1248 | | |
1267 | 1249 | | |
1268 | 1250 | | |
| 1251 | + | |
1269 | 1252 | | |
1270 | 1253 | | |
1271 | | - | |
1272 | 1254 | | |
1273 | 1255 | | |
1274 | 1256 | | |
1275 | | - | |
1276 | | - | |
| 1257 | + | |
| 1258 | + | |
1277 | 1259 | | |
1278 | 1260 | | |
1279 | 1261 | | |
| |||
1395 | 1377 | | |
1396 | 1378 | | |
1397 | 1379 | | |
1398 | | - | |
1399 | | - | |
| 1380 | + | |
1400 | 1381 | | |
1401 | 1382 | | |
1402 | 1383 | | |
| |||
2110 | 2091 | | |
2111 | 2092 | | |
2112 | 2093 | | |
2113 | | - | |
| 2094 | + | |
| 2095 | + | |
2114 | 2096 | | |
2115 | 2097 | | |
2116 | 2098 | | |
2117 | 2099 | | |
2118 | | - | |
2119 | | - | |
| 2100 | + | |
| 2101 | + | |
| 2102 | + | |
2120 | 2103 | | |
2121 | 2104 | | |
2122 | 2105 | | |
2123 | 2106 | | |
2124 | 2107 | | |
2125 | | - | |
2126 | | - | |
| 2108 | + | |
| 2109 | + | |
| 2110 | + | |
2127 | 2111 | | |
2128 | 2112 | | |
2129 | 2113 | | |
| |||
0 commit comments