Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Nov 17, 2023. It is now read-only.

Commit 761a339

Browse files
authored
Enable clang-tidy performance rules (#19226)
* Enable clang-tidy performance rules * Fix lint * Fix macro
1 parent 906a159 commit 761a339

23 files changed

Lines changed: 62 additions & 16 deletions

.clang-tidy

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,20 @@ WarningsAsErrors: >
3939
modernize-use-emplace, modernize-use-equals-default, modernize-use-equals-delete,
4040
modernize-use-noexcept, modernize-use-nullptr, modernize-use-override,
4141
modernize-use-transparent-functors, modernize-use-using,
42-
performance-unnecessary-copy-initialization, performance-move-const-arg
42+
performance-faster-string-find, performance-implicit-conversion-in-loop,
43+
performance-inefficient-algorithm, performance-inefficient-string-concatenation,
44+
performance-trivially-destructible, performance-inefficient-vector-operation,
45+
performance-move-const-arg, performance-move-constructor-init,
46+
performance-noexcept-move-constructor, performance-no-automatic-move,
47+
performance-unnecessary-copy-initialization, performance-type-promotion-in-math-fn
4348
4449
# modernize checks not enforced:
4550
# modernize-use-auto
4651
# modernize-avoid-bind
4752

53+
# performance checks not enforced due to segmentation fault
54+
# performance-for-range-copy
55+
4856
# Todo: define a better regex match that includes most project headers, but excludes third party
4957
# code.
5058
HeaderFilterRegex: '^src/.*'

example/extensions/lib_custom_op/transposerowsp_lib.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void transpose(MXTensor& src, MXTensor& dst, const OpResource& res) {
6060
res.alloc_sparse(B, 0, mp.size());
6161
float *Bval = (float*) (B->data);
6262
int didx = 0, iidx = 0;
63-
for(auto i : mp) {
63+
for(const auto& i : mp) {
6464
B->indices[iidx++] = i.first;
6565
for(auto j : i.second) {
6666
Bval[didx++] = j;

src/api/operator/numpy/np_delete_op.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ MXNET_REGISTER_API("_npi.delete")
8787
}
8888
}
8989
std::vector<NDArray*> inputs;
90+
inputs.reserve(num_inputs);
9091
for (int i = 0; i < num_inputs; ++i) {
9192
inputs.push_back(args[i].operator mxnet::NDArray*());
9293
}

src/api/operator/numpy/np_insert_op.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ MXNET_REGISTER_API("_npi.insert_scalar")
6161
attrs.op = op;
6262
SetAttrDict<op::NumpyInsertParam>(&attrs);
6363
std::vector<NDArray*> inputs;
64+
inputs.reserve(num_inputs);
6465
for (int i = 0; i < num_inputs; ++i) {
6566
inputs.push_back(args[i].operator mxnet::NDArray*());
6667
}
@@ -109,6 +110,7 @@ MXNET_REGISTER_API("_npi.insert_slice")
109110
attrs.op = op;
110111
SetAttrDict<op::NumpyInsertParam>(&attrs);
111112
std::vector<NDArray*> inputs;
113+
inputs.reserve(num_inputs);
112114
for (int i = 0; i < num_inputs; ++i) {
113115
inputs.push_back(args[i].operator mxnet::NDArray*());
114116
}
@@ -145,6 +147,7 @@ MXNET_REGISTER_API("_npi.insert_tensor")
145147
attrs.op = op;
146148
SetAttrDict<op::NumpyInsertParam>(&attrs);
147149
std::vector<NDArray*> inputs;
150+
inputs.reserve(num_inputs);
148151
for (int i = 0; i < num_inputs; ++i) {
149152
inputs.push_back(args[i].operator mxnet::NDArray*());
150153
}

src/api/operator/numpy/np_matrix_op.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ MXNET_REGISTER_API("_npi.concatenate")
155155
SetAttrDict<op::NumpyConcatenateParam>(&attrs);
156156
int num_inputs = arg_size - 2;
157157
std::vector<NDArray*> inputs;
158+
inputs.reserve(num_inputs);
158159
for (int i = 0; i < num_inputs; ++i) {
159160
inputs.push_back(args[i].operator mxnet::NDArray*());
160161
}
@@ -303,6 +304,7 @@ MXNET_REGISTER_API("_npi.column_stack")
303304
SetAttrDict<op::NumpyColumnStackParam>(&attrs);
304305
int num_outputs = 0;
305306
std::vector<NDArray*> inputs;
307+
inputs.reserve(param.num_args);
306308
for (int i = 0; i < param.num_args; ++i) {
307309
inputs.push_back(args[i].operator mxnet::NDArray*());
308310
}
@@ -323,6 +325,7 @@ MXNET_REGISTER_API("_npi.hstack")
323325
SetAttrDict<op::ConcatParam>(&attrs);
324326
int num_outputs = 0;
325327
std::vector<NDArray*> inputs;
328+
inputs.reserve(param.num_args);
326329
for (int i = 0; i < param.num_args; ++i) {
327330
inputs.push_back(args[i].operator mxnet::NDArray*());
328331
}

src/api/operator/random/np_uniform_op.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ MXNET_REGISTER_API("_npi.uniform")
6060
num_inputs = 2;
6161
}
6262
}
63+
inputs.reserve(num_inputs);
6364
for (int i = 0; i < num_inputs; ++i) {
6465
inputs.push_back(args[i].operator mxnet::NDArray*());
6566
}

src/c_api/c_api.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -982,7 +982,7 @@ void registerOperators(void *lib, int verbose, mxnet::ext::msgSize_t msgSize,
982982
// InferSType is defined in customized lib.
983983
// convert attributes to vector of char*
984984
std::vector<const char*> attr_keys, attr_vals;
985-
for (auto kv : attrs.dict) {
985+
for (const auto& kv : attrs.dict) {
986986
attr_keys.push_back(kv.first.c_str());
987987
attr_vals.push_back(kv.second.c_str());
988988
}
@@ -1047,7 +1047,7 @@ void registerOperators(void *lib, int verbose, mxnet::ext::msgSize_t msgSize,
10471047
p->attrs.name = n->attrs.name + "_backward";
10481048
// copy attributes and subgraphs
10491049
p->attrs.dict = n->attrs.dict;
1050-
for (auto s : n->attrs.subgraphs)
1050+
for (const auto& s : n->attrs.subgraphs)
10511051
p->attrs.subgraphs.push_back(s);
10521052
// set control dependency and attr parser
10531053
p->control_deps.emplace_back(n);
@@ -1101,8 +1101,8 @@ void registerOperators(void *lib, int verbose, mxnet::ext::msgSize_t msgSize,
11011101

11021102
// determine amount of memory needed to store all the input shapes
11031103
size_t buff_size = 0;
1104-
for (size_t i = 0; i < in_shapes.size(); ++i)
1105-
buff_size += in_shapes[i].ndim();
1104+
for (const auto & in_shape : in_shapes)
1105+
buff_size += in_shape.ndim();
11061106

11071107
// copy input shapes to raw memory layout
11081108
std::vector<uint32_t> inbuff(buff_size);

src/c_api/c_api_ndarray.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ int MXCreateCachedOp(SymbolHandle handle,
168168
nnvm::Symbol* sym = static_cast<nnvm::Symbol*>(handle);
169169
API_BEGIN();
170170
std::vector<std::pair<std::string, std::string> > flags;
171+
flags.reserve(num_flags);
171172
for (int i = 0; i < num_flags; ++i) {
172173
flags.emplace_back(keys[i], vals[i]);
173174
}

src/imperative/eliminate_common_expr_pass.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ using NodeInput = std::pair<const Node*, uint32_t>;
5050
*/
5151
std::vector<NodeInput> ConvertInputs(const std::vector<nnvm::NodeEntry>& inputs) {
5252
std::vector<NodeInput> ret;
53+
ret.reserve(inputs.size());
5354
for (const auto& entry : inputs) {
5455
ret.emplace_back(entry.node.get(), entry.index);
5556
}

src/io/dataset.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ class GroupDataset final : public Dataset {
439439
CHECK_LT(idx, size_)
440440
<< "GetItem index: " << idx << " out of bound: " << size_;
441441
ret->clear();
442-
for (auto child : childs_) {
442+
for (const auto& child : childs_) {
443443
std::vector<NDArray> temp_ret;
444444
if (!child->GetItem(idx, &temp_ret)) return false;
445445
ret->insert(ret->end(), temp_ret.begin(), temp_ret.end());

0 commit comments

Comments
 (0)