public static function run($num_runs, $display = true, callable $callable = null)
    {
        self::swapCallable($display, $callable, true);
        
        $results = [];
        if (self::$enabled) {
            $profiler  = new Profiler();
            $run_times = [];
            $memory    = memory_get_usage();
            for($i = 0; $i < $num_runs; $i++) {
                $profiler->start("loop");
                $callable();
                $run_times[] = $profiler->stop("loop", false);
            }
            $results["memory"]  = memory_get_usage() - $memory;
            $results["total"]   = array_sum($run_times);
            $results["average"] = $results["total"] / $num_runs;
            $results["runs"]    = $run_times;
            
            if ($display) {
                $output  = sprintf("Total Runs:   %17s%s",    number_format($num_runs),PHP_EOL);
                $output .= sprintf("Total Time:   %17.12f%s", $results["total"], PHP_EOL);
                $output .= sprintf("Average Time: %17.12f%s", $results["average"], PHP_EOL);
                $output .= sprintf("Total Memory: %17s%s",    Conversions::bytesToHuman($results["memory"]), PHP_EOL);
                $output .= sprintf('-------------------------------%s', PHP_EOL);
                
                if (count($run_times) > 50) {
                    $runs   = [];
                    $runs[] = array_slice($run_times, 0, 20);
                    $runs[] = array_slice($run_times, -20, null, true);
                } else {
                    $runs[] = $run_times;
                }
                foreach($runs as $run) {
                    foreach($run as $index => $microtime) {
                        $output .= sprintf("Run #%-7d %18.12f%s", ++$index, $microtime, PHP_EOL);
                        if (20 == $index) {
                            $output .= "......." . PHP_EOL;
                        }
                    }
                }
                
                echo $output;
            }
        }
        
        return $results;
    }