1  /*
2   * Copyright (c) 2024 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 "perf/cpu_timer.h"
17  
18  #include <chrono>
19  #include <cstdint>
20  
21  #include <render/namespace.h>
22  
23  RENDER_BEGIN_NAMESPACE()
24  using namespace std::chrono;
25  using Clock = system_clock;
26  
Begin()27  void CpuTimer::Begin() noexcept
28  {
29      begin_ = Clock::now().time_since_epoch().count();
30  }
31  
End()32  void CpuTimer::End() noexcept
33  {
34      end_ = Clock::now().time_since_epoch().count();
35  }
36  
GetMicroseconds() const37  int64_t CpuTimer::GetMicroseconds() const noexcept
38  {
39      return (int64_t)(duration_cast<microseconds>(Clock::duration(end_) - Clock::duration(begin_)).count());
40  }
41  RENDER_END_NAMESPACE()
42