Next: , Previous: , Up: Software Objects   [Contents][Index]


2.1.16 Lighter asm alternatives light/range/diff

2.1.16.1 Lighter genomes with light Software Mixin

A refinement of the ‘simple’ software representation, using a simplified genome data structure which require fewer cons cells but does not allow tagging of lines of code with information.

2.1.16.2 Range based genomes range Software Mixin

An software object which uses even less memory than the ‘light’ or ‘simple’ software object, but adds some complexity to many genome manipulation methods. Genomes are stored as references to ranges in the original reference genome. This representation does not permit wholly new genome elements, only re-orderings of existing genome elements.

2.1.16.3 Difference genomes with diff Software Mixin

Classes which inherit from diff will replace their genome structure with a diff which instead of holding a copy of the entire genome only holds a difference against a reference version of the genome. For example, the following will transparently save a single reference version of the genome and each individual in the population of ‘arm’ objects will only hold a pointer to this single reference, and it’s own diff against this single reference.

   (defclass arm (software-evolution-library:diff elf-arm)
     ((results :initarg :results :accessor results :initform nil)))

After some initial experimentation, it does seem that mutations are now noticeably slower, because the differencing operations are not cheap.