gtn/.venv/Lib/site-packages/mypyc/doc/future.md

43 lines
1.4 KiB
Markdown
Raw Normal View History

# Future
This document introduces some ideas for future improvements.
## Basic Optimizations
Implement basic optimizations such as common subexpression elimination and
loop invariant code motion.
Importantly, common subexpression elimination could be used to avoid
redundant type checks.
## Operation-specific Optimizations
Some operations or combinations of successive operations can be
replaced with more efficient operations. Examples:
* If `s` is a string, `s[i] == 'x'` doesn't need to construct the
intermediate single-character string object `s[i]` but just compare
the character value to `ord('x')`.
* `a + ':' + b` (two string concetenations) can be implemented as
single three-operand concatenation that doesn't construct an
intermediate object.
* `x in {1, 3}` can be translated into `x == 1 or x == 3` (more
generally we need to evaluate all right-hand-side items).
## Integer Range Analysis
Implement integer range analysis. This can be used in various ways:
* Use untagged representations for some registers.
* Use faster integer arithmetic operations for operations that
only deal with short integers or that can't overflow.
* Remove redundant list and string index checks.
## Always Defined Attributes
Somehow make it possible to enforce that attributes in a class are always
defined. This makes attribute access faster since we don't need to explicitly
check if the attribute is defined.