init
This commit is contained in:
commit
38355d2442
9083 changed files with 1225834 additions and 0 deletions
42
.venv/lib/python3.8/site-packages/mypyc/doc/future.md
Normal file
42
.venv/lib/python3.8/site-packages/mypyc/doc/future.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue