Re:Finally, a Makefile formatter (50 years overdue)
by johnisgood on Tuesday June 24, 2025 @10:21AM
(#44366580)
Using the down-vote button is such an absurd way to disagree. So whoever you may be, you should engage in a conversation. With what do you disagree, and why?
Re:Finally, a Makefile formatter (50 years overdue)
by johnisgood on Wednesday June 25, 2025 @06:23PM
(#44382327)
FYI:
[johnisgood@arch regex]$ hyperfine 'perl regex_test.pl' 'python3 regex_test.py'
Benchmark 1: perl regex_test.pl
Time (mean ± σ): 1.807 s ± 0.028 s [User: 1.752 s, System: 0.054 s]
Range (min … max): 1.780 s … 1.857 s 10 runs
Benchmark 2: python3 regex_test.py
Time (mean ± σ): 3.316 s ± 0.230 s [User: 3.246 s, System: 0.069 s]
Range (min … max): 3.052 s … 3.858 s 10 runs
Summary
perl regex_test.pl ran
1.84 ± 0.13 times faster than python3 regex_test.py
This is for a very simple script!You know why?
Because Perl was practically designed for text processing and regex.
It has:
- A regex engine that's deeply integrated and highly optimized.
- Less overhead (no interpreter startup, minimal memory structures).
- Simpler string substitution and less abstraction.
Seriously, it is not a matter of opinion.
I hope you are convinced now.
In case you are not, let me know, I will let you in on a lot of great details. :)
Trivial example:
Replace all numbers in a string:
Perl:
Python: Perl's design history is text processing as a first-class goal. It has syntax-level efficiency, and expressive power (e.g. s///e, tr///, inline regex flags, etc.). Do you want me to go on? These are all objective ways to substantiate the claims I made.Perl is implemented in C with a runtime that aggressively optimizes text processing. The core primitives such as split, join, substr, index, s///, etc.) are tight wrappers around C functions with minimal object overhead. In Python, even simple string manipulations go through Python's object system, and in Python strings are immutable, so every manipulation creates a new string object, which incurs extra memory allocation and garbage collection.
Perl is typically 30-80% faster in similar regex-heavy workloads because there is no import overhead, internal opcode dispatch for regex, and no allocation of new strings until match is confirmed.
Shall I go on?