diff options
author | John Reck <jreck@google.com> | 2011-05-16 10:03:17 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2011-05-16 15:56:50 -0700 |
commit | d05cd8d73ef0b36cd415af17933fe79f9f8f328d (patch) | |
tree | 5743adcf2410a7de49a38d8b45b85d6a62fd089e /Source/WebCore/platform/graphics/android/PerformanceMonitor.cpp | |
parent | a6845ffdb3f9fd5eefb347185b141f7959000bac (diff) | |
download | external_webkit-d05cd8d73ef0b36cd415af17933fe79f9f8f328d.zip external_webkit-d05cd8d73ef0b36cd415af17933fe79f9f8f328d.tar.gz external_webkit-d05cd8d73ef0b36cd415af17933fe79f9f8f328d.tar.bz2 |
Basic performance monitor for tiles
Change-Id: Ic67a5093a7c09b870ec34160ae0c999162dddcfc
Diffstat (limited to 'Source/WebCore/platform/graphics/android/PerformanceMonitor.cpp')
-rw-r--r-- | Source/WebCore/platform/graphics/android/PerformanceMonitor.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Source/WebCore/platform/graphics/android/PerformanceMonitor.cpp b/Source/WebCore/platform/graphics/android/PerformanceMonitor.cpp new file mode 100644 index 0000000..20d1299 --- /dev/null +++ b/Source/WebCore/platform/graphics/android/PerformanceMonitor.cpp @@ -0,0 +1,81 @@ +/* + * Copyright 2011, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "PerformanceMonitor.h" + +#include <wtf/text/CString.h> + +namespace WebCore { + +PerformanceMonitor::PerformanceMonitor() +{ +} + +PerformanceMonitor::~PerformanceMonitor() +{ +} + +void PerformanceMonitor::start(const String &tag) +{ + if (tag.isEmpty()) + return; + PerfItem *item; + if (m_tags.contains(tag)) + item = m_tags.get(tag); + else { + item = new PerfItem(); + m_tags.set(tag, item); + } + gettimeofday(&(item->start_time), NULL); +} + +void PerformanceMonitor::stop(const String &tag) +{ + if (!m_tags.contains(tag)) + return; + PerfItem *item = m_tags.get(tag); + struct timeval end; + gettimeofday(&end, NULL); + long seconds, useconds; + seconds = end.tv_sec - item->start_time.tv_sec; + useconds = end.tv_usec - item->start_time.tv_usec; + + float mtime = (seconds * 1000.0) + (useconds/1000.0); + + float avg = 0; + if (item->average_ms) { + item->average_ms = (item->average_ms + mtime) / 2; + } else + item->average_ms = mtime; +} + +float PerformanceMonitor::getAverageDuration(const String &tag) +{ + if (tag.isEmpty() || !m_tags.contains(tag)) + return 0; + return m_tags.get(tag)->average_ms; +} + +} // namespace WebCore |