1 /* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "mutex_perf.h" 17 18 namespace ffrt { ~MutexStatistic()19MutexStatistic::~MutexStatistic() 20 { 21 printf("***Mutex Cycles Statistic***\n"); 22 for (auto& it : cycles_) { 23 printf("***%s: %u***\n", it.first.c_str(), it.second); 24 } 25 } 26 27 static MutexStatistic gMutexStatistic; 28 AddMutexCycles(std::string key,uint32_t val)29void AddMutexCycles(std::string key, uint32_t val) 30 { 31 std::lock_guard<decltype(gMutexStatistic.mtx_)> lg(gMutexStatistic.mtx_); 32 if (gMutexStatistic.cycles_.find(key) != gMutexStatistic.cycles_.end()) { 33 gMutexStatistic.cycles_[key] += val; 34 } else { 35 gMutexStatistic.cycles_[key] = val; 36 } 37 } 38 } // namespace ffrt