[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Possible GSoC Project: AOT "bytecode" compiler for octave
From: |
Lasse Schuirmann |
Subject: |
Possible GSoC Project: AOT "bytecode" compiler for octave |
Date: |
Wed, 12 Feb 2014 15:01:34 +0100 |
Hello,
after placing some measurements to octaves source code measuring the
parser and evaluator there was a clear tendency that the parser takes
multiple times of the time the evaluator needs. (You can try it out
easily with this patch https://savannah.gnu.org/patch/?8267 setting
the VERBOSE macro in ./liboctave/util/debug_message_settings.h to
PARSE_MEASURE | EVAL_MEASURE.)
This problem may be adressed in various ways. I think a first step
would be to binary serialize the parsed object and deserialize it to a
preparsed octave file. Instead of parsing the file each time one could
just deserialize it from file right into the binary representation the
evaluator needs (which would be the tree_statement_list). It is a kind
of AOT "bytecode" Compiler.
I think this would be useful for the most used files, especially the
ones lying in ./scripts .
I have done a few prove-of-concept studies for myself - I also have
successfully serialized a tree_statement_list that contained a comment
with some rather generic methods I wrote. I am relatively sure that
this would work well with the JIT compiler since this is on the
evaluation side only. This would not involve any external library like
boost but I am thinking about turning my growing "collection" of
generic serialization functions to an own library.
I would like to participate on the google summer of code with this project
if you think that would be useful. I am a student of Computer Science
and Engineering at the TUHH in germany.
(https://www.tuhh.de/alt/tuhh/education/degree-courses/bachelors-programs/informatik-ingenieurwesen.html)
Please let me know what you think about this and if you have any questions.
Greetings,
Lasse Schuirmann
- Possible GSoC Project: AOT "bytecode" compiler for octave,
Lasse Schuirmann <=