diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2012-08-03 11:56:26 +0000 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2012-08-03 11:56:26 +0000 |
commit | 4c0cb2204e0924131aad564b99ef56d64659f1cd (patch) | |
tree | 7687b696dd5caecec2996bf663b612c348daab40 /poc/poc02-compiling-cake | |
parent | 4c1215ca04bc682a5165363724a69f9a557304de (diff) | |
download | 2012-php-weave-4c0cb2204e0924131aad564b99ef56d64659f1cd.tar.gz 2012-php-weave-4c0cb2204e0924131aad564b99ef56d64659f1cd.tar.bz2 2012-php-weave-4c0cb2204e0924131aad564b99ef56d64659f1cd.zip |
Serialisation corrigée : json c'est une connerie... mais php embarque des fonctions de serialisation qui vont bien.
3m30 au parsing
30 secondes à la lecture de l'ensemble (118Mo sur disque, 800Mo en RAM)
Note : faut pas parser tous les tests case !!
Note2 : les gros blocs de commentaire de début de fichiers pourraient être sautés
git-svn-id: file:///var/svn/2012-php-weave/trunk@12 d972a294-176a-4cf9-8ea1-fcd5b0c30f5c
Diffstat (limited to 'poc/poc02-compiling-cake')
4 files changed, 19 insertions, 16 deletions
diff --git a/poc/poc02-compiling-cake/src/php-weave/abstract_weaver.class.php b/poc/poc02-compiling-cake/src/php-weave/abstract_weaver.class.php index f9eb513..1bc7bce 100644 --- a/poc/poc02-compiling-cake/src/php-weave/abstract_weaver.class.php +++ b/poc/poc02-compiling-cake/src/php-weave/abstract_weaver.class.php @@ -1,6 +1,6 @@ <?php require_once '../vendor/nikic/php-parser/lib/bootstrap.php'; -require_once 'json_serialiser.class.php'; +require_once 'php_serializer.class.php'; function dbg($indent, $text) { for($i=0;$i<$indent;$i++) echo "."; @@ -20,7 +20,7 @@ abstract class AbstractWeaver { $this->parser = new PHPParser_Parser(new PHPParser_Lexer); $this->nodeDumper = new PHPParser_NodeDumper; $this->prettyPrinter = new PHPParser_PrettyPrinter_Zend; - $this->serializer = new PHPParser_JSONSerialiser; + $this->serializer = new PHPParser_PHPSerializer; $this->unserializer = &$this->serializer; $this->ast_dump_before_walk=""; $this->ast_dump_after_walk=""; @@ -218,7 +218,7 @@ abstract class AbstractWeaver { } public function unserializeAST($src_filepath) { - return $this->serializer->unserialize($src_filepath); + return $this->serializer->unserialize(file_get_contents($src_filepath)); } public function findAllFiles($basepath, $regexMatch, $regexPrune, $already_found=array(), $level=0) { diff --git a/poc/poc02-compiling-cake/src/php-weave/json_serialiser.class.php b/poc/poc02-compiling-cake/src/php-weave/json_serialiser.class.php deleted file mode 100644 index 40f55ce..0000000 --- a/poc/poc02-compiling-cake/src/php-weave/json_serialiser.class.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -require_once '../vendor/nikic/php-parser/lib/bootstrap.php'; - -class PHPParser_JSONSerialiser implements PHPParser_Serializer,PHPParser_Unserializer { - public function serialize(array $nodes) { - //FIXME : gros problème, ça n'encode pas les objects !!! - return json_encode($nodes); - } - public function unserialize($string) { - return json_decode($string); - } -} diff --git a/poc/poc02-compiling-cake/src/php-weave/main2.php b/poc/poc02-compiling-cake/src/php-weave/main2.php index faf3ac1..93e4673 100644 --- a/poc/poc02-compiling-cake/src/php-weave/main2.php +++ b/poc/poc02-compiling-cake/src/php-weave/main2.php @@ -7,11 +7,14 @@ ini_set('xdebug.max_nesting_level', 2000); $weaver=new CakePHPWeaver; $filelist = $weaver->findAllFiles("../workdir/cache", '/\.ast$/', '/^$/'); $asts=array(); + +echo memory_get_usage()."\n"; + foreach ($filelist as $f) { echo "Unserializing '$f'\n"; $asts[]=$weaver->unserializeAST($f); } -echo memory_get_usage(); +echo memory_get_usage()."\n"; ?> diff --git a/poc/poc02-compiling-cake/src/php-weave/php_serializer.class.php b/poc/poc02-compiling-cake/src/php-weave/php_serializer.class.php new file mode 100644 index 0000000..c987d0e --- /dev/null +++ b/poc/poc02-compiling-cake/src/php-weave/php_serializer.class.php @@ -0,0 +1,12 @@ +<?php +require_once '../vendor/nikic/php-parser/lib/bootstrap.php'; + +class PHPParser_PHPSerializer implements PHPParser_Serializer,PHPParser_Unserializer { + public function serialize(array $nodes) { + //Utilise les fonctions internes de PHP + return serialize($nodes); + } + public function unserialize($string) { + return unserialize($string); + } +} |