Skip to content

olemartinorg/QuadTreeBenchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuadTreeBenchmark

This was an experiment I did to find the fastest (and most memory efficient) QuadTree implementation in PHP. I theorized that an array-based implementation would beat the OOP implementation in MarkBaker/QuadTrees, but i proved myself thoroughly wrong.

Test result

This is the output I get on my laptop:

PHP 5.6: OOP implementation by MarkBaker

Loading cities: .......................
Added 22977 cities to QuadTree
Load Time: 1.2774 s
Current Memory: 25556.29 k
Peak Memory: 25574.85 k

Cities in range
    Latitude: +48.500000 -> +51.500000
    Longitude: +48.500000 -> +51.500000

    Kazakhstan, Oral => Lat: +051.23 Long: +051.37

Search Time: 0.0062 s
Current Memory: 25557.91 k
Peak Memory: 25574.85 k

PHP 5.6: Array-based implementation

Loading cities: .......................
Added 22977 cities to ArrayQuadTree
Load Time: 1.3734 s
Current Memory: 42477.94 k
Peak Memory: 42486.11 k

Cities in range
    Kazakhstan, Oral => Lat: +051.23 Long: +051.37

Search Time: 0.0062 s
Current Memory: 42479.28 k
Peak Memory: 42491.25 k

PHP 5.6: SplFixedArray-based implementation

Loading cities: .......................
Added 22977 cities to SplQuadTree
Load Time: 2.2058 s
Current Memory: 73684.83 k
Peak Memory: 73692.92 k

Cities in range
    Kazakhstan, Oral => Lat: +051.23 Long: +051.37

Search Time: 0.0143 s
Current Memory: 73686.18 k
Peak Memory: 73698.30 k

PHP 7: OOP implementation by MarkBaker

Loading cities: .......................
Added 22977 cities to QuadTree
Load Time: 0.5745 s
Current Memory: 12382.30 k
Peak Memory: 12400.04 k

Cities in range
    Latitude: +48.500000 -> +51.500000
    Longitude: +48.500000 -> +51.500000

    Kazakhstan, Oral => Lat: +051.23 Long: +051.37

Search Time: 0.0024 s
Current Memory: 12382.86 k
Peak Memory: 12400.04 k

PHP 7: Array-based implementation

Loading cities: .......................
Added 22977 cities to ArrayQuadTree
Load Time: 0.6627 s
Current Memory: 29960.22 k
Peak Memory: 29961.24 k

Cities in range
    Kazakhstan, Oral => Lat: +051.23 Long: +051.37

Search Time: 0.0028 s
Current Memory: 29960.61 k
Peak Memory: 29962.61 k

PHP 7: SplFixedArray-based implementation

Loading cities: .......................
Added 22977 cities to SplQuadTree
Load Time: 1.1465 s
Current Memory: 44436.87 k
Peak Memory: 44437.89 k

Cities in range
    Kazakhstan, Oral => Lat: +051.23 Long: +051.37

Search Time: 0.0052 s
Current Memory: 44437.26 k
Peak Memory: 44439.24 k

PHP 7: \Ds\Vector-based implementation

Loading cities: .......................
Added 22977 cities to VectorQuadTree
Load Time: 0.8049 s
Current Memory: 24487.13 k
Peak Memory: 24488.16 k

Cities in range
    Kazakhstan, Oral => Lat: +051.23 Long: +051.37

Search Time: 0.0032 s
Current Memory: 24487.52 k
Peak Memory: 24489.40 k

About

Benchmarking 4 different QuadTree implementations in PHP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published