-
- Downloads
py: Store bytecode arg names in bytecode (were in own array).
This saves a lot of RAM for 2 reasons: 1. For functions that don't have default values, var args or var kw args (which is a large number of functions in the general case), the mp_obj_fun_bc_t type now fits in 1 GC block (previously needed 2 because of the extra pointer to point to the arg_names array). So this saves 16 bytes per function (32 bytes on 64-bit machines). 2. Combining separate memory regions generally saves RAM because the unused bytes at the end of the GC block are saved for 1 of the blocks (since that block doesn't exist on its own anymore). So generally this saves 8 bytes per function. Tested by importing lots of modules: - 64-bit Linux gave about an 8% RAM saving for 86k of used RAM. - pyboard gave about a 6% RAM saving for 31k of used RAM.
Showing
- py/bc.c 14 additions, 6 deletionspy/bc.c
- py/bc.h 1 addition, 1 deletionpy/bc.h
- py/emitbc.c 18 additions, 6 deletionspy/emitbc.c
- py/emitglue.c 3 additions, 9 deletionspy/emitglue.c
- py/emitglue.h 1 addition, 2 deletionspy/emitglue.h
- py/obj.h 1 addition, 1 deletionpy/obj.h
- py/objfun.c 5 additions, 3 deletionspy/objfun.c
- py/objfun.h 3 additions, 4 deletionspy/objfun.h
- py/objgenerator.c 3 additions, 0 deletionspy/objgenerator.c
- py/showbc.c 9 additions, 1 deletionpy/showbc.c
Please register or sign in to comment