-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor findpath #4095
Refactor findpath #4095
Conversation
9ef59eb
to
a3d5543
Compare
Codecov Report
@@ Coverage Diff @@
## master #4095 +/- ##
==========================================
- Coverage 85.08% 84.92% -0.16%
==========================================
Files 1324 1319 -5
Lines 131911 130867 -1044
==========================================
- Hits 112236 111143 -1093
- Misses 19675 19724 +49
Continue to review full report at Codecov.
|
a3d5543
to
693378b
Compare
batchVids.reserve(batchSize); | ||
std::vector<folly::Future<DataSet>> futures; | ||
for (size_t i = 0; i < totalSize; ++i) { | ||
batchVids.push_back(meetVids[i]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you iterate the meetVids vector from end to start, you will need not to copy the contents to a new vector.
} | ||
|
||
std::unordered_multimap<Value, Path> BFSShortestPathExecutor::createPath( | ||
std::vector<Value> meetVids, bool reverse, bool oddStep) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need not to copy the vector of values.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
}); | ||
} | ||
|
||
DataSet BFSShortestPathExecutor::doConjunct(const std::vector<Value> meetVids, bool oddStep) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const std::vector<Value> &
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
|
||
std::vector<folly::Future<Status>> futures; | ||
auto leftFuture = folly::via(runner(), [this]() { return buildPath(false); }); | ||
auto rightFuture = folly::via(runner(), [this]() { return buildPath(true); }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I want to remind you that the buildPath
will be executed in different threads carefully, don't share the same variables inside the function, especially the fields of the class.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree, the previous version used local variables but may cause data copying, so use the member variables
|
||
DataSet MultiShortestPathExecutor::doConjunct(Interims::iterator startIter, | ||
Interims::iterator endIter, | ||
bool oddStep) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's better to let it be a const
function for thread-safe usage.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this function modifies member variables
000e397
to
c03e5c8
Compare
* optimize bfs * optimizer allpath * optimizer multi-shortestpath * optimizer multi shortest path * fix validate unit test * add some comment * fix error * fix bfs error * add comment * delete conjunct * add findpath unit test * delete useless file * delete log * remove check * multi thread executor * single shortest multi thread * add some testcases * add gflags * fix bfs error * address comment
* Add SetUsageMessage For daemons (#4134) * fix the wrong regex pattern of scientific notation (#4136) * fix updatePart (#4139) * fix updatePart * fix format check Co-authored-by: Sophie <[email protected]> * show DATA_BALANCE in job list (#4138) Co-authored-by: Sophie <[email protected]> * fix disk fault recovery (#4131) * fix disk fault recovery * add ut Co-authored-by: Sophie <[email protected]> * Refactor findpath (#4095) * optimize bfs * optimizer allpath * optimizer multi-shortestpath * optimizer multi shortest path * fix validate unit test * add some comment * fix error * fix bfs error * add comment * delete conjunct * add findpath unit test * delete useless file * delete log * remove check * multi thread executor * single shortest multi thread * add some testcases * add gflags * fix bfs error * address comment * Just report errorof property pruner in debug mode (#4142) Co-authored-by: Sophie <[email protected]> * remove Atomic Edge (#4127) * try to remove Atomic Edge * remove some space * remove zone Co-authored-by: Doodle <[email protected]> * fix show tag/edge index status (#4148) * fix multiple match (#4143) Co-authored-by: Sophie <[email protected]> * Refactor the process of symbols in optimizer. (#4146) * Refactor the process of symbols in optimizer. * Fix variable shadowing. * Collect boundary from MatchResult directly. * Check variable in TransformResult don't referenced by outside plan nodes. Co-authored-by: Sophie <[email protected]> Co-authored-by: Alex Xing <[email protected]> Co-authored-by: jie.wang <[email protected]> Co-authored-by: Doodle <[email protected]> Co-authored-by: liwenhui-soul <[email protected]> Co-authored-by: panda-sheep <[email protected]> Co-authored-by: jimingquan <[email protected]> Co-authored-by: [email protected] <[email protected]> Co-authored-by: kyle.cao <[email protected]> Co-authored-by: shylock <[email protected]>
What type of PR is this?
What problem(s) does this PR solve?
Issue(s) number:
Description:
1、reduce AllPath & multiPairShortestPath 's memory usage
2、Integrate the function of conjunct path into the path operator to reduce data copying
for specific details, please refer to the comment in the file
The blue line is optimized
The green line is not optimized
How do you solve it?
Special notes for your reviewer, ex. impact of this fix, design document, etc:
Checklist:
Tests:
Affects:
Release notes:
Please confirm whether to be reflected in release notes and how to describe: