使用Neo4j的Java API版本3.1.0-M08,我使用Dijkstra算法構建了最短路徑搜索。我有很多數據,磁盤上有28 GB。節點代表城市,關係代表連接。通常情況下,一個城市將有很多的連接。在我的PathExpander
中,我排除了大量關係,導致遍歷整個圖的只有很小的一部分。儘管如此,搜索執行不亦樂乎:Neo4j Java API:Bad Dijkstra性能
Relations traversed: 5343
Duration: ~14s
Performance: 373 relations/s
這是剖析熱身運行的熱方法是這樣的:
的PathExpander
和CostEvaluator
閱讀Long
類型,Integer
的性質和Double
。我試圖用getAllProperties
替換getProperty
的呼叫,但沒有幫助。
該應用程序使用以下JVM參數啓動:-Xmx10g -Xms10g
。我有一個相當快速的固態硬盤,並且確保在測量之前通過運行相同的搜索幾次來預加載高速緩存。從第二次運行開始,我看不到磁盤活動,這意味着遍歷的圖應該在RAM中。
我使用默認參數調用GraphDatabaseFactory
。定製配置可以提高性能嗎?請注意,我只有16 GB RAM用於測試目的。