summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2012-08-03 11:56:26 +0000
committerLudovic Pouzenc <ludovic@pouzenc.fr>2012-08-03 11:56:26 +0000
commit4c0cb2204e0924131aad564b99ef56d64659f1cd (patch)
tree7687b696dd5caecec2996bf663b612c348daab40
parent4c1215ca04bc682a5165363724a69f9a557304de (diff)
download2012-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
-rw-r--r--poc/poc02-compiling-cake/src/php-weave/abstract_weaver.class.php6
-rw-r--r--poc/poc02-compiling-cake/src/php-weave/json_serialiser.class.php12
-rw-r--r--poc/poc02-compiling-cake/src/php-weave/main2.php5
-rw-r--r--poc/poc02-compiling-cake/src/php-weave/php_serializer.class.php12
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);
+ }
+}