]> granicus.if.org Git - php/commitdiff
No longer true
authorMarcus Boerger <helly@php.net>
Thu, 4 Dec 2003 19:47:10 +0000 (19:47 +0000)
committerMarcus Boerger <helly@php.net>
Thu, 4 Dec 2003 19:47:10 +0000 (19:47 +0000)
ext/spl/README.PROFILING [deleted file]

diff --git a/ext/spl/README.PROFILING b/ext/spl/README.PROFILING
deleted file mode 100755 (executable)
index 67e55b3..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-SQLite is the first extension that makes use of SPL automatically by simply
-enabling both.
-
-SQLite offers four access strategies:
-1) sqlite_query + sqlite_fetch_array
-2) sqlite_unbuffered_query + sqlite_fetch_array
-3) sqlite_query + iterators (sqlite_current)
-4) sqlite_unbuffered_query + iterators (sqlite_current)
-5) sqlite_array_query
-
-1) and 3) do "over eager evaluating" since they fetch all rows directly.
-
-2) does "eager evaluating". It always fetches the next row but doesn't 
-keep the current row, so that it must be stored elsewhere if it must be 
-accessed more then once. For instance this happens when you need to access 
-columns separately.
-
-4) does "eager evaluating". But in contrast to 2) it keeps the current row
-hence its name.
-
-There is no efficient way for "lazy or just in time evaluating" so 4) should 
-be the best case. And 4) also enables the foreach trick.
-
-5) does a full buffered fetch and returns the complete result into an array.
-As long as you only have a few rows in your result this is very fast and of
-course it is very flexible since you can access any column/row as often you
-like and in any order you like. But it needs to store the full result what
-is called "eager evaluating".
-
-Speedwise analysis:
-
-I compared a database using a table of round about 200 rows with 3 columns.
-I measured the case where 10 rows are returned, since i guess this is a 
-value often taken as default list size in web applications. However i did
-that 10 times because the loop initialization is the slowest part of foreach
-overloading. Since we are only interested in the relative effect foreach 
-overloading has i stiped the setup part and used a query result iteration 
-that does nothing. That means i run 'php -h' in the profiler first and then 
-profiled every single case. For completeness i also computed the values 
-including the setup process.
-
-Method,  without setup,  with setup
-1)          100.00%        100.00%
-2)           89.32%         97.16%
-3)           88.35%         96.90%
-
-Furthermore i did some more checks and found out that the loop process using
-foreach overloading (2) takes a constant time while it seems that the time 
-needed to add more rows to the array increases with the number of rows being
-already in the array. As a result (2) is faster than (3) after round about 45 
-rows.
-
-The loop codes used:
-
-1)  Unbuffered query
-
-<?php 
-$dbname = dirname(__FILE__).'/profile.sqlite';
-$db = sqlite_factory($dbname);
-
-for ($i = 0; $i < 10; $i++) {
-       $res = $db->unbuffered_query("SELECT idx, name, size from files LIMIT 10", SQLITE_NUM);
-       while ($res->has_more()) {
-//             var_dump($res->current());
-               $res->current();
-               $res->next();
-       }
-}
-echo "DONE!\n";
-?>
-
-2) Unbuffered query using foreach overloading
-
-<?php 
-$dbname = dirname(__FILE__).'/profile.sqlite';
-$db = sqlite_factory($dbname);
-
-for ($i = 0; $i < 10; $i++) {
-       foreach($db->unbuffered_query("SELECT idx, name, size from files LIMIT 10", SQLITE_NUM) as $row) {
-//             var_dump($row);
-       }
-}
-echo "DONE!\n";
-?>
-
-3) Array query method
-
-<?php 
-$dbname = dirname(__FILE__).'/profile.sqlite';
-$db = sqlite_factory($dbname);
-
-for ($i = 0; $i < 10; $i++) {
-       foreach($db->array_query("SELECT idx, name, size from files LIMIT 10", SQLITE_NUM) as  $row)  {
-//             var_dump($row);
-       }
-}
-echo "DONE!\n";
-?>
\ No newline at end of file