} public function emit() { return $this->keys; } } $regex = "/GET \\/ongoing\\/When\\/\\d\\d\\dx\\/(\\d\\d\\d\\d\\/\\d\\d\\/\\d\\d\\/[^ .]+) /"; $fn = new WideFinderFunction($regex); $clock = new React\EEP\Clock\Wall(0); $win = new React\EEP\Window\Monotonic($fn, $clock); // On emit, log top 10 hits to standard output $win->on('emit', function ($matches) { arsort($matches); $i = 0; foreach (array_slice($matches, 0, 10) as $url => $n) { printf("%d:\t%s with %d hits\n", $i++, $url, $n); } echo "\n\n"; }); $fh; if (file_exists("./data.txt")) { $fh = fopen("data.txt", "r"); } else { echo "Fetching data file\n"; $fh = fopen("http://www.tbray.org/tmp/o10k.ap", "r"); } while ($line = fgets($fh)) { $win->enqueue($line); } $win->tick(); fclose($fh);
echo json_encode($values), "\n"; }); $m3->on("emit", function ($values) { echo json_encode($values), "\n"; }); if ($_SERVER['argc'] != 2) { echo "\nUsage: ", $_SERVER['argv'][0], " <items>\n"; exit; } $items = $_SERVER['argv'][1]; $start = microtime(true); for ($i = 1; $i <= $items; $i++) { $m1->enqueue($i); } $m1->tick(); $end = microtime(true); printf("V1. Elapsed: %.2f meps: %.3f\n", $end - $start, $items / ($end - $start) / 1000000.0); $start = microtime(true); for ($i = 1; $i <= $items; $i++) { $m2->enqueue($i); } $m2->tick(); $end = microtime(true); printf("V2. Elapsed: %.2f meps: %.3f\n", $end - $start, $items / ($end - $start) / 1000000.0); $start = microtime(true); for ($i = 1; $i <= $items; $i++) { $m3->enqueue($i); } $m3->tick(); $end = microtime(true); printf("V3. Elapsed: %.2f\n", $end - $start);