aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/lite/profiling
diff options
context:
space:
mode:
authorGravatar Shashi Shekhar <shashishekhar@google.com>2018-05-31 13:10:07 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-05-31 13:12:37 -0700
commiteebbcaf554fb89059054936491763fde9cf9513d (patch)
treef56c392ef37d03f8cfbd19e207c10bce9731e4db /tensorflow/contrib/lite/profiling
parentff28cfe18d69657cafcddadff6a36eb040c0cd7d (diff)
Add profiling statistics to benchmark.
PiperOrigin-RevId: 198767297
Diffstat (limited to 'tensorflow/contrib/lite/profiling')
-rw-r--r--tensorflow/contrib/lite/profiling/BUILD7
-rw-r--r--tensorflow/contrib/lite/profiling/profile_buffer.h12
-rw-r--r--tensorflow/contrib/lite/profiling/time.cc29
-rw-r--r--tensorflow/contrib/lite/profiling/time.h27
4 files changed, 67 insertions, 8 deletions
diff --git a/tensorflow/contrib/lite/profiling/BUILD b/tensorflow/contrib/lite/profiling/BUILD
index c86be65ca7..c31189f2b1 100644
--- a/tensorflow/contrib/lite/profiling/BUILD
+++ b/tensorflow/contrib/lite/profiling/BUILD
@@ -29,6 +29,13 @@ cc_library(
name = "profile_buffer",
hdrs = ["profile_buffer.h"],
copts = common_copts,
+ deps = [":time"],
+)
+
+cc_library(
+ name = "time",
+ srcs = ["time.cc"],
+ hdrs = ["time.h"],
)
cc_library(
diff --git a/tensorflow/contrib/lite/profiling/profile_buffer.h b/tensorflow/contrib/lite/profiling/profile_buffer.h
index 299b2a9cad..65d86dce47 100644
--- a/tensorflow/contrib/lite/profiling/profile_buffer.h
+++ b/tensorflow/contrib/lite/profiling/profile_buffer.h
@@ -18,6 +18,8 @@ limitations under the License.
#include <cstddef>
#include <cstdint>
+#include "tensorflow/contrib/lite/profiling/time.h"
+
namespace tflite {
namespace profiling {
@@ -74,7 +76,7 @@ class ProfileBuffer {
if (!enabled_) {
return kInvalidEventHandle;
}
- uint64_t timestamp = NowMicros();
+ uint64_t timestamp = time::NowMicros();
int index = current_index_ % event_buffer_.size();
event_buffer_[index].tag = tag;
event_buffer_[index].event_type = event_type;
@@ -103,7 +105,7 @@ class ProfileBuffer {
}
int event_index = event_handle % max_size;
- event_buffer_[event_index].end_timestamp_us = NowMicros();
+ event_buffer_[event_index].end_timestamp_us = time::NowMicros();
}
// Returns the size of the buffer.
@@ -134,12 +136,6 @@ class ProfileBuffer {
}
private:
- static uint64_t NowMicros() {
- // TODO(shashishekhar): Refactor this to a separate file.
- struct timeval tv;
- gettimeofday(&tv, nullptr);
- return static_cast<uint64_t>(tv.tv_sec) * 1000000 + tv.tv_usec;
- }
bool enabled_;
uint32_t current_index_;
std::vector<ProfileEvent> event_buffer_;
diff --git a/tensorflow/contrib/lite/profiling/time.cc b/tensorflow/contrib/lite/profiling/time.cc
new file mode 100644
index 0000000000..446660bb74
--- /dev/null
+++ b/tensorflow/contrib/lite/profiling/time.cc
@@ -0,0 +1,29 @@
+/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+#include "tensorflow/contrib/lite/profiling/time.h"
+
+#include <sys/time.h>
+
+namespace tflite {
+namespace profiling {
+namespace time {
+uint64_t NowMicros() {
+ struct timeval tv;
+ gettimeofday(&tv, nullptr);
+ return static_cast<uint64_t>(tv.tv_sec) * 1000000 + tv.tv_usec;
+}
+} // namespace time
+} // namespace profiling
+} // namespace tflite
diff --git a/tensorflow/contrib/lite/profiling/time.h b/tensorflow/contrib/lite/profiling/time.h
new file mode 100644
index 0000000000..cc2ec319b8
--- /dev/null
+++ b/tensorflow/contrib/lite/profiling/time.h
@@ -0,0 +1,27 @@
+/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+#ifndef TENSORFLOW_CONTRIB_LITE_PROFILING_TIME_H_
+#define TENSORFLOW_CONTRIB_LITE_PROFILING_TIME_H_
+
+#include <cstdint>
+
+namespace tflite {
+namespace profiling {
+namespace time {
+uint64_t NowMicros();
+} // namespace time
+} // namespace profiling
+} // namespace tflite
+#endif // TENSORFLOW_CONTRIB_LITE_PROFILING_TIME_H_