968aa4926a
Summary: Looking for connected components in a random graph. This test performs the following: - Generates a random graph that is NOT sequential in memory (otherwise itertion over edges is 2 or more times faster). - Connectivity by iterating over all the edges. - Ditto over vertices. - Ditto over vertices in parallel. Not done: - Edge filtering based on XY. I could/should add that to see how it affects perf. - Getting component info out from union-find. Local results are encouraging. Iterating over the graph is the bottleneck. Still, I get connectivity of 10M vertices/edges in <7sec (parallel over vertices). Will test on 250M remote now. Locally obtained results (20M/20M, 2 threads) ``` I1115 14:57:55.136875 357 otto_parallel.cpp:50] Generating 2000000 vertices... I1115 14:58:19.057734 357 otto_parallel.cpp:74] Generated 2000000 vertices in 23.9208 seconds. I1115 14:58:19.919221 357 otto_parallel.cpp:82] Generating 2000000 edges... I1115 14:58:39.519951 357 otto_parallel.cpp:93] Generated 2000000 edges in 19.3398 seconds. I1115 14:58:39.520349 357 otto_parallel.cpp:196] Running Edge iteration... I1115 14:58:43.857264 357 otto_parallel.cpp:199] Done in 4.33691 seconds, result: 3999860270398 I1115 14:58:43.857316 357 otto_parallel.cpp:196] Running Vertex iteration... I1115 14:58:49.498181 357 otto_parallel.cpp:199] Done in 5.64087 seconds, result: 4000090070787 I1115 14:58:49.498208 357 otto_parallel.cpp:196] Running Connected components - Edges... I1115 14:58:54.232530 357 otto_parallel.cpp:199] Done in 4.73433 seconds, result: 323935 I1115 14:58:54.232570 357 otto_parallel.cpp:196] Running Connected components - Vertices... I1115 14:59:00.412395 357 otto_parallel.cpp:199] Done in 6.17983 seconds, result: 323935 I1115 14:59:00.412422 357 otto_parallel.cpp:196] Running Parallel connected components - Vertices... I1115 14:59:04.662087 357 otto_parallel.cpp:199] Done in 4.24967 seconds, result: 323935 I1115 14:59:04.662116 357 otto_parallel.cpp:196] Running Expansion... I1115 14:59:13.913015 357 otto_parallel.cpp:199] Done in 9.25091 seconds, result: 323935 ``` Reviewers: buda, mislav.bradac, dgleich, teon.banek Reviewed By: buda, teon.banek Subscribers: teon.banek, pullbot Differential Revision: https://phabricator.memgraph.io/D982 |
||
---|---|---|
.. | ||
bolt_buffer.cpp | ||
bolt_chunked_decoder_buffer.cpp | ||
bolt_chunked_encoder_buffer.cpp | ||
bolt_common.hpp | ||
bolt_decoder.cpp | ||
bolt_encoder.cpp | ||
bolt_result_stream.cpp | ||
bolt_session.cpp | ||
bolt_testdata.hpp | ||
CMakeLists.txt | ||
concurrent_list.cpp | ||
concurrent_map_access.cpp | ||
concurrent_map.cpp | ||
concurrent_set.cpp | ||
cypher_main_visitor.cpp | ||
database_key_index.cpp | ||
database_label_property_index.cpp | ||
database_transaction_timeout.cpp | ||
datastructure_union_find.cpp | ||
deferred_deleter.cpp | ||
durability.cpp | ||
dynamic_bitset.cpp | ||
exceptions.cpp | ||
executor.cpp | ||
fswatcher.cpp | ||
graph_db_accessor_index_api.cpp | ||
graph_db_accessor.cpp | ||
graph_db.cpp | ||
interpreter.cpp | ||
mvcc_find_update_common.hpp | ||
mvcc_find.cpp | ||
mvcc_gc_common.hpp | ||
mvcc_gc.cpp | ||
mvcc_one_transaction.cpp | ||
mvcc_parallel_update.cpp | ||
mvcc.cpp | ||
network_endpoint.cpp | ||
network_timeouts.cpp | ||
property_value_store.cpp | ||
query_common.hpp | ||
query_cost_estimator.cpp | ||
query_expression_evaluator.cpp | ||
query_plan_accumulate_aggregate.cpp | ||
query_plan_bag_semantics.cpp | ||
query_plan_common.hpp | ||
query_plan_create_set_remove_delete.cpp | ||
query_plan_edge_cases.cpp | ||
query_plan_match_filter_return.cpp | ||
query_planner.cpp | ||
query_semantic.cpp | ||
query_variable_start_planner.cpp | ||
queue.cpp | ||
raft.cpp | ||
reactor_distributed.cpp | ||
reactor_local.cpp | ||
record_edge_vertex_accessor.cpp | ||
ring_buffer.cpp | ||
scheduler.cpp | ||
signal_handler.cpp | ||
skiplist_access.cpp | ||
skiplist_gc.cpp | ||
skiplist_position_and_count.cpp | ||
skiplist_reverse_iteration.cpp | ||
skiplist_suffix.cpp | ||
static_bitset.cpp | ||
storage_address.cpp | ||
stripped.cpp | ||
timestamp.cpp | ||
transaction_engine.cpp | ||
typed_value.cpp | ||
unique_object_store.cpp | ||
utils_on_scope_exit.cpp | ||
utils_string.cpp | ||
watchdog.cpp |