Skip to content

Commit 019e72f

Browse files
committed
[perf] optimize manager set function.
[doc] add tips for python version
1 parent 42a16a9 commit 019e72f

File tree

8 files changed

+28
-39
lines changed

8 files changed

+28
-39
lines changed

python/tutorial/T04-Complex.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ def tutorial_complex():
1919

2020
d1, d2, d3 = MyNode1('nodeD1'), MyNode1('nodeD2'), MyNode1('nodeD3')
2121
d4 = MyNode2({d1}, 'nodeD4', 1)
22-
d23_cluster = GCluster()
23-
d23_cluster.addGElements([d2, d3])
24-
d23_cluster.addDependGElements({d1})
22+
d23_cluster = GCluster([d2, d3]) # 表示 d23_cluster 中包含 [d2,d3] 两个element
23+
d23_cluster.addDependGElements({d1}) # 表示 d23_cluster 依赖 {d1} 一个element,注意 [] 和 {} 的不用用法
2524
d_region = GRegion([d1, d23_cluster, d4])
2625

2726
a, c, e = MyNode1(), MyNode1(), MyNode1()

src/GraphCtrl/GraphElement/GElementManager.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ GElementManager::~GElementManager() {
2323
CStatus GElementManager::init() {
2424
CGRAPH_FUNCTION_BEGIN
2525

26-
/** 首先判定,注册的element全部不为空 */
2726
for (auto element : manager_elements_) {
2827
CGRAPH_ASSERT_NOT_NULL(element)
2928
}

src/GraphCtrl/GraphElement/GGroup/GGroup.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,19 @@ CStatus GGroup::addElement(GElementPtr element) {
4848

4949
this->group_elements_arr_.emplace_back(element);
5050
element->belong_ = this;
51+
// 在这里不要进行判断返回值,因为可能是region刚刚创建的时候,还没被写入 pipeline中
5152
element->addManagers(param_manager_, event_manager_, stage_manager_);
53+
54+
status = addElementEx(element);
5255
CGRAPH_FUNCTION_END
5356
}
5457

5558

59+
CStatus GGroup::addElementEx(GElementPtr element) {
60+
CGRAPH_EMPTY_FUNCTION
61+
}
62+
63+
5664
CVoid GGroup::dumpGroupLabelBegin(std::ostream& oss) {
5765
oss << "subgraph ";
5866
oss << "cluster_p" << this; // cluster_ 是 graphviz的关键字,和CGraph中GCluster逻辑无关
@@ -95,12 +103,12 @@ CStatus GGroup::addManagers(GParamManagerPtr paramManager,
95103
GEventManagerPtr eventManager,
96104
GStageManagerPtr stageManager) {
97105
CGRAPH_FUNCTION_BEGIN
98-
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager)
106+
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager, stageManager)
99107
CGRAPH_ASSERT_INIT(false)
100108

101-
this->setGParamManager(paramManager);
102-
this->setGEventManager(eventManager);
103-
this->setGStageManager(stageManager);
109+
status = GElement::addManagers(paramManager, eventManager, stageManager);
110+
CGRAPH_FUNCTION_CHECK_STATUS
111+
104112
for (GElementPtr element : group_elements_arr_) {
105113
CGRAPH_ASSERT_NOT_NULL(element)
106114
status += element->addManagers(paramManager, eventManager, stageManager);

src/GraphCtrl/GraphElement/GGroup/GGroup.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,14 @@ class GGroup : public GElement {
2929
* @param element
3030
* @return
3131
*/
32-
virtual CStatus addElement(GElementPtr element);
32+
CStatus addElement(GElementPtr element);
33+
34+
/**
35+
* 在添加element的时候,附加选项
36+
* @param element
37+
* @return
38+
*/
39+
virtual CStatus addElementEx(GElementPtr element);
3340

3441
CStatus addManagers(GParamManagerPtr paramManager,
3542
GEventManagerPtr eventManager,

src/GraphCtrl/GraphElement/GGroup/GRegion/GRegion.cpp

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,11 @@ CStatus GRegion::run() {
5959
}
6060

6161

62-
CStatus GRegion::addElement(GElementPtr element) {
62+
CStatus GRegion::addElementEx(GElementPtr element) {
6363
CGRAPH_FUNCTION_BEGIN
6464
CGRAPH_ASSERT_NOT_NULL(element, manager_)
6565

6666
manager_->manager_elements_.emplace(element);
67-
status = GGroup::addElement(element);
6867
CGRAPH_FUNCTION_END
6968
}
7069

@@ -105,25 +104,6 @@ CBool GRegion::isSerializable() const {
105104
}
106105

107106

108-
CStatus GRegion::addManagers(GParamManagerPtr paramManager,
109-
GEventManagerPtr eventManager,
110-
GStageManagerPtr stageManager) {
111-
CGRAPH_FUNCTION_BEGIN
112-
CGRAPH_ASSERT_INIT(false)
113-
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager, stageManager)
114-
115-
this->setGParamManager(paramManager);
116-
this->setGEventManager(eventManager);
117-
this->setGStageManager(stageManager);
118-
for (auto* cur : manager_->manager_elements_) {
119-
CGRAPH_ASSERT_NOT_NULL(cur)
120-
status += cur->addManagers(paramManager, eventManager, stageManager);
121-
}
122-
123-
CGRAPH_FUNCTION_END
124-
}
125-
126-
127107
CBool GRegion::isSeparate(GElementCPtr a, GElementCPtr b) const {
128108
return GSeparateOptimizer::checkSeparate(manager_->manager_elements_, a, b);
129109
}

src/GraphCtrl/GraphElement/GGroup/GRegion/GRegion.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,12 @@ class GRegion : public GGroup {
3838
CStatus run() final;
3939
CStatus destroy() final;
4040

41-
CStatus addElement(GElementPtr element) final;
42-
4341
private:
4442
CVoid dump(std::ostream& oss) final;
4543

4644
CBool isSerializable() const final;
4745

48-
CStatus addManagers(GParamManagerPtr paramManager,
49-
GEventManagerPtr eventManager,
50-
GStageManagerPtr stageManager) final;
46+
CStatus addElementEx(GElementPtr element) final;
5147

5248
CBool isSeparate(GElementCPtr a, GElementCPtr b) const final;
5349

src/GraphCtrl/GraphElement/GGroup/GSome/GSome.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ class GSome : public GGroup {
2222
protected:
2323
explicit GSome();
2424

25-
CStatus addElement(GElementPtr element) final;
26-
2725
CStatus run() final;
2826

2927
CBool isSerializable() const final;
@@ -36,6 +34,9 @@ class GSome : public GGroup {
3634

3735
CGRAPH_NO_ALLOWED_COPY(GSome)
3836

37+
private:
38+
CStatus addElementEx(GElementPtr element) final;
39+
3940
private:
4041
CInt left_num_ = 0; // 还剩的触发结束的个数
4142
CStatus cur_status_ ; // 记录异步时刻的当前状态信息

src/GraphCtrl/GraphElement/GGroup/GSome/GSome.inl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ GSome<TriggerNum>::GSome() {
2121

2222

2323
template<CInt TriggerNum>
24-
CStatus GSome<TriggerNum>::addElement(GElementPtr element) {
24+
CStatus GSome<TriggerNum>::addElementEx(GElementPtr element) {
2525
CGRAPH_FUNCTION_BEGIN
2626
CGRAPH_ASSERT_INIT(false)
2727
CGRAPH_ASSERT_NOT_NULL(element)
@@ -34,7 +34,6 @@ CStatus GSome<TriggerNum>::addElement(GElementPtr element) {
3434
element->setTimeout(CGRAPH_MAX_BLOCK_TTL, GElementTimeoutStrategy::HOLD_BY_PIPELINE);
3535
}
3636

37-
group_elements_arr_.emplace_back(element);
3837
CGRAPH_FUNCTION_END
3938
}
4039

0 commit comments

Comments
 (0)