Changes between Version 7 and Version 8 of CottoTasklist
- Timestamp:
- 12/15/09 20:49:50 (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CottoTasklist
v7 v8 1 1 This page is a personal todo list for me, cotto. Others are welcome to take on any tasks mentioned here, but the primary purpose for this page is to keep track of what I intend to do. Because of that, I haven't spend much effort on breaking tasks down into bite-size chunks or made much of a concrete plan. If you are interested in helping but don't know where to start, catch me on #parrot and I'll put you to work. 2 2 3 profiling: 4 - Get to know the PackFile code. 5 - Read through the bytecode pdd (13) and make it match the current implementation. 6 - Focus on annotations, but it wouldn't be a bad thing to lower the PackFile bus number. 3 profiling (important, in decreasing order): 4 - Annotations are slow. Make it possible to avoid a Schlemiel the Painter algorithm by getting annotations from bytecode iteratively. 5 - http://irclog.perlgeek.de/parrot/2009-12-12#i_1828456 6 - Get to know the PackFile code. 7 - Read through the bytecode pdd (13) and make it match the current implementation. 8 - Focus on annotations, but it wouldn't be a bad thing to raise the PackFile bus number. 7 9 - test profiling output (pprof format) 8 10 - test pprof to callgrind conversion and callgrind-style output 9 - Figure out a nice way to integrate annotations into the profile.10 - Switch to a Configure.pl-based approach for finding the appropriate timing functions.11 11 - Create an efficient binary output format with optional compression, similar to NYTProf. 12 - Optimize the profiling runloop code. 13 - Consider moving the Callgrind output code into the profiling runcore. 12 - Alternately, consider moving the Callgrind output code into the profiling runcore and using the pprof output only for testing. 13 - Look into spitting out NYTProf-compatible output too. 14 - Optimize the profiling runloop code. Major refactors should wait until some tests are in place. 14 15 - ~~Abstract output in the profiling runcore to minimize the amount of code that cares about the output format.~~ 16 - ~~Figure out a nice way to integrate annotations into the profile.~~ 17 18 profiling (would be nice): 15 19 - Fix CLI argument parsing so that options can be passed to the profiling runcore. 16 20 - It'd also be nice if parrot were smart enough to treat -Rp or -Rprof to the same as -Rprofiling 17 21 - This is a trivial change to compilers/imcc/main.c 18 - Annotations are slow. Make it possible to avoid a Schlemiel the Painter algorithm by getting annotations from bytecode iteratively. 19 - http://irclog.perlgeek.de/parrot/2009-12-12#i_1828456 22 - Switch to a Configure.pl-based approach for finding the appropriate timing functions. 20 23 21 24 Questions: … … 23 26 * A basic block is a straight line piece of code without any branches or branch targets. It's the smallest individual unit of code to which you can apply a compiler optimization. 24 27 25 26 28 profiling testing todo: 27 - figure out what to test28 - actual profiling runcore output (does it work, is the output valid)29 - Figure out what to test. 30 - Write some fake tests to figure out what the profiling testing interface should look like. 29 31 - pprof2cg (split into a module, test individual components, multiple output formats (when implemented)) 30 32 - The Callgrind output code may end up in C since nqp is way too slow and even the Perl 5 version isn't very fast. This would make testing more interesting, though I'd still have a way to produce either the pprof or the callgrind formatted output. 31 - stats output should also be tested since it's nice for debugging (note to self: ???)33 - There's now no reason that multiple output formats can't coexist apart from the extra testing burden. 32 34 - specific test cases 33 - stupid hello world 35 - test all output types (currently none and pprof, possibly cg and nytprof if I get ambitious) 36 - hello world 34 37 - profiling a pbc without line information (if possible) 35 38 - proper namespace support