Speed up TaskSpecification copy (#5709)

This commit is contained in:
Eric Liang
2019-09-15 19:57:34 -07:00
committed by Philipp Moritz
parent 2b2eb4debb
commit 4bf7de084d
3 changed files with 17 additions and 13 deletions
+6 -6
View File
@@ -12,8 +12,8 @@ void TaskSpecification::ComputeResources() {
if (required_placement_resources.empty()) {
required_placement_resources = required_resources;
}
required_resources_ = ResourceSet(required_resources);
required_placement_resources_ = ResourceSet(required_placement_resources);
required_resources_.reset(new ResourceSet(required_resources));
required_placement_resources_.reset(new ResourceSet(required_placement_resources));
}
// Task specification getter methods.
@@ -69,12 +69,12 @@ size_t TaskSpecification::ArgMetadataSize(size_t arg_index) const {
return message_->args(arg_index).metadata().size();
}
const ResourceSet TaskSpecification::GetRequiredResources() const {
return required_resources_;
const ResourceSet &TaskSpecification::GetRequiredResources() const {
return *required_resources_;
}
const ResourceSet TaskSpecification::GetRequiredPlacementResources() const {
return required_placement_resources_;
const ResourceSet &TaskSpecification::GetRequiredPlacementResources() const {
return *required_placement_resources_;
}
bool TaskSpecification::IsDriverTask() const {
+6 -4
View File
@@ -83,7 +83,7 @@ class TaskSpecification : public MessageWrapper<rpc::TaskSpec> {
///
/// \return The resources that will be acquired during the execution of this
/// task.
const ResourceSet GetRequiredResources() const;
const ResourceSet &GetRequiredResources() const;
/// Return the resources that are required for a task to be placed on a node.
/// This will typically be the same as the resources acquired during execution
@@ -94,7 +94,7 @@ class TaskSpecification : public MessageWrapper<rpc::TaskSpec> {
/// so the placement of the actor should take this into account.
///
/// \return The resources that are required to place a task on a node.
const ResourceSet GetRequiredPlacementResources() const;
const ResourceSet &GetRequiredPlacementResources() const;
bool IsDriverTask() const;
@@ -140,9 +140,11 @@ class TaskSpecification : public MessageWrapper<rpc::TaskSpec> {
private:
void ComputeResources();
/// Field storing required resources. Initalized in constructor.
ResourceSet required_resources_;
/// TODO(ekl) consider optimizing the representation of ResourceSet for fast copies
/// instead of keeping shared ptrs here.
std::shared_ptr<ResourceSet> required_resources_;
/// Field storing required placement resources. Initalized in constructor.
ResourceSet required_placement_resources_;
std::shared_ptr<ResourceSet> required_placement_resources_;
};
} // namespace ray