64 Commits

Author SHA1 Message Date
Jeong, YunWon
5f08a01cf4 Lazy locals dict for NEWLOCALS frames (#7307)
Defer locals dict allocation for function frames until first access.
Most function frames only use fastlocals and never touch the locals
dict, so this skips one dict heap allocation per function call.

Also remove a redundant code.clone() in invoke_with_locals.

Func call ~23% faster, method call ~15% faster in benchmarks.
2026-03-03 09:17:17 +09:00
Jeong YunWon
20376451eb Implement Py_mod_create slot support in multi-phase init 2026-01-22 11:21:42 +09:00
Jeong YunWon
bc02b2318c module_exec 2026-01-21 22:39:40 +09:00
Lee Dogeon
4ab6a45405 Use stdlib native modules in benchmarks (#6792)
Change benchmark interpreter from without_stdlib to with_init to load
Rust-optimized native modules like _json, ensuring benchmarks measure
actual optimized performance rather than pure Python fallbacks.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 08:43:25 +09:00
Lee Dogeon
2e5257d098 Introduce benchmark for json.loads (#6723) 2026-01-14 14:44:34 +09:00
Jeong, YunWon
c71c78c1a0 Upgrade pyo3 (#6389) 2025-12-10 10:29:20 +09:00
Shahar Naveh
141ed72693 Dependencies cleanup (#6151)
* Update deps

* Remove some unused deps

* Update lockfile
2025-09-17 09:10:35 +09:00
Jack O'Connor
763d5d48b5 Add sorted.py to microbenchmarks (#6086)
* Add microbenchmark for `sorted`

I chose 5 * Iterations to try better show that RustPython
sort implementation scales noticeably worse CPython's
with respect to the number of elements.

* Mention how to run a specific benchmark

* Update python version in bench README

3.13 better reflects the current state of the project vs 3.7.
2025-08-28 09:58:20 +09:00
Jeong, YunWon
fe2c9bf361 Fix stable clippy (#5843) 2025-06-27 12:12:21 +09:00
Ashwin Naren
a7ad848270 Rust dependency updates (#5651) 2025-04-15 08:50:29 +09:00
Ashwin Naren
b81ae9b954 More cspell fixes (#5670) 2025-04-11 09:37:20 +09:00
Noa
6b72d2ef5d Check+lint examples, tests, and benches in CI 2025-03-28 11:26:12 +09:00
Ashwin Naren
b870b0e1b5 2024 edition formatting
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-02-26 11:48:22 -08:00
Noa
37dc28a69d Update deps (#5417)
* Upgrade nix

* Update deps

* Upgrade pyo3, winreg

* Fix errors from upgrading
2024-09-27 13:11:00 +09:00
Jeong YunWon
24f57dde2f Align Settings to PyConfig 2024-04-30 23:18:14 +09:00
wellweek
2fde8e91e5 fix some typos (#5187)
Signed-off-by: wellweek <xiezitai@outlook.com>
2024-03-11 15:01:37 +09:00
Jeong, YunWon
1c93c1630b Merge pull request #5164 from dchiquito/frozenset-hash
Use CPython hash algorithm for frozenset
2024-02-10 14:55:24 +09:00
Daniel Chiquito
bf461cdebc Use CPython hash algorithm for frozenset
The original hash algorithm just XOR'd all the hashes of the elements of
the set, which is problematic. The CPython algorithm is required to pass
the tests.

- Replace `PyFrozenSet::hash` with CPython's algorithm
- Remove unused `hash_iter_unorded` functions
- Add `frozenset` benchmark
- Enable tests
- Lower performance expectations on effectiveness test
- Adjust `slot::hash_wrapper` so that it doesn't rehash the computed
  hash value in the process of converting PyInt to PyHash.
2024-02-09 21:02:40 -05:00
Daniel Chiquito
ea1f72e92d Replace rust-cpython with pyo3 in benches
Update the actual benchmark harnesses.

Because the internal APIs previously used are no longer available, I
opted to use `compile` and `exec` from within the CPython context to
compile and execute code. There's probably more overhead to that than
the internal API had, but that overhead should be consistent per
benchmark.

If anyone cares about hyperoptimizing benchmarks then they can optimize
the harness as well.
2024-02-09 16:12:47 -05:00
Jeong YunWon
1208416b92 0.3.0 release 2023-09-06 18:49:55 +09:00
Jim Fasarakis-Hilliard
06c6244599 Fix failures in the cron ci. (#5002) 2023-06-11 14:23:17 +03:00
Jeong YunWon
f078f79c90 Flatten rustpython_parser interface 2023-02-22 20:32:31 +09:00
Jeong YunWon
d94f638784 Fix nightly clippy warnings 2022-10-16 02:38:50 +09:00
Jeong YunWon
d45f3da192 Add source_path to ParseError 2022-08-22 08:42:20 +09:00
Noa
33e848e32e Fix benches 2022-08-18 20:52:11 -05:00
Jeong Yunwon
c99b05b466 increase nbody benches argument 2022-06-04 18:02:36 +09:00
Jeong Yunwon
386057cdf5 Add fannkuch.py 2022-05-29 08:19:47 +09:00
Jeong Yunwon
9b2a9d2377 TypeZoo uses &'static Py<PyType> 2022-05-27 10:35:01 +09:00
Jeong Yunwon
fb52694e41 PyAttributes key is PyStrInterned 2022-05-23 09:03:13 +09:00
Jeong Yunwon
40bc8f0016 move microbenchmark strings.py to proper directory 2022-05-12 04:21:40 +09:00
Jeong Yunwon
3b9721c326 Add microbenchmarks/cmp.py 2022-05-12 04:21:40 +09:00
Jeong Yunwon
6fd5094c05 Remove Interpreter::default() not to trap users init without stdlib 2022-04-30 05:09:33 +09:00
Jeong Yunwon
ab7d921772 PySettings is not a python object 2022-04-23 07:56:20 +09:00
Jeong Yunwon
c4b80b3a24 IntoObject::into_object() and PyValue::into_pyobject(vm) 2022-04-19 00:38:18 +09:00
Jeong Yunwon
6357a1acbe clean up imports and useless allow attributes 2022-04-15 23:58:20 +09:00
Kangzhi Shi
9a2eef6fab fix compile 2021-11-27 13:49:05 +02:00
stvsmth
ba6f855a66 Fix typo in benches readme.
Correct the file location of the index.html file.
2021-11-02 08:37:37 -06:00
Padraic Fanning
a50b91bb0e Make benchmark work with act, and fix import
This doesn't remedy a certain benchmark's possible memory consumption.
2021-10-24 01:47:12 -04:00
jfh
6ce591d90c Use as_object in benchmark locals. 2021-10-19 16:50:27 +03:00
Steve Shi
723357962a Refactor list avoid duplicate the vec (#3241)
* list count bench
* Refactor list count avoid duplicate the vec
* optimize list count with HEAPTYPE flag
* introduce generic safe iter functions for list
* Refactor list functions (contains, index, remove)
* Refactor list iter functions with const generics
* optimize list with richcompare
* optimize list iter_equal
2021-10-16 13:16:45 +09:00
Jeong YunWon
a42d547a3f new_{utf8_str, ascii_literal} -> new_str again 2021-10-11 21:28:14 +09:00
Jeong YunWon
741cfea565 vm.ctx.new_int returns PyInt 2021-10-11 01:05:38 +09:00
Jeong YunWon
44f7bc468a vm::utils::ascii! -> common::ascii! 2021-09-28 15:47:54 +09:00
Jeong YunWon
5fab0771ae expose ascii! macro as pub 2021-09-26 12:27:03 +09:00
Jeong YunWon
795738d32b ascii! macro 2021-09-21 18:14:42 +09:00
Jeong YunWon
7395959f5f Fix PyStr operations to be safe 2021-09-21 00:32:26 +09:00
Jeong YunWon
48dc5c96b6 PyStrKind 2021-09-16 03:35:44 +09:00
Noah
99104faaf7 Re-export pyobject::* from the root of the crate 2021-05-20 10:24:07 -05:00
Noah
db6fa17ffe Don't recompile CPython microbenchmarks every time 2021-04-05 09:49:16 -05:00
Noah
3c9bcf3a5e Don't recompile cpython code at each run 2021-03-21 21:23:54 -05:00