Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
benchmark
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
benchmark
Commits
d49516bc
Commit
d49516bc
authored
Apr 13, 2015
by
Jean-Louis Leroy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make it compile with Visual Studio 2013.
parent
693967fe
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
52 additions
and
11 deletions
+52
-11
macros.h
include/benchmark/macros.h
+4
-0
benchmark.cc
src/benchmark.cc
+2
-2
cycleclock.h
src/cycleclock.h
+3
-0
string_util.h
src/string_util.h
+2
-1
walltime.cc
src/walltime.cc
+41
-8
No files found.
include/benchmark/macros.h
View file @
d49516bc
...
@@ -27,12 +27,16 @@
...
@@ -27,12 +27,16 @@
#if defined(__GNUC__)
#if defined(__GNUC__)
# define BENCHMARK_UNUSED __attribute__((unused))
# define BENCHMARK_UNUSED __attribute__((unused))
# define BENCHMARK_ALWAYS_INLINE __attribute__((always_inline))
# define BENCHMARK_ALWAYS_INLINE __attribute__((always_inline))
# define BENCHMARK_NOEXCEPT noexcept
#elif defined(_MSC_VER) && !defined(__clang__)
#elif defined(_MSC_VER) && !defined(__clang__)
# define BENCHMARK_UNUSED
# define BENCHMARK_UNUSED
# define BENCHMARK_ALWAYS_INLINE __forceinline
# define BENCHMARK_ALWAYS_INLINE __forceinline
# define BENCHMARK_NOEXCEPT
# define __func__ __FUNCTION__
#else
#else
# define BENCHMARK_UNUSED
# define BENCHMARK_UNUSED
# define BENCHMARK_ALWAYS_INLINE
# define BENCHMARK_ALWAYS_INLINE
# define BENCHMARK_NOEXCEPT
#endif
#endif
#if defined(__GNUC__)
#if defined(__GNUC__)
...
...
src/benchmark.cc
View file @
d49516bc
...
@@ -15,11 +15,11 @@
...
@@ -15,11 +15,11 @@
#include "benchmark/benchmark.h"
#include "benchmark/benchmark.h"
#include "internal_macros.h"
#include "internal_macros.h"
#include <sys/time.h>
#ifndef OS_WINDOWS
#ifndef OS_WINDOWS
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/resource.h>
#endif
#include <unistd.h>
#include <unistd.h>
#endif
#include <cstdlib>
#include <cstdlib>
#include <cstring>
#include <cstring>
...
...
src/cycleclock.h
View file @
d49516bc
...
@@ -40,7 +40,10 @@
...
@@ -40,7 +40,10 @@
extern
"C"
uint64_t
__rdtsc
();
extern
"C"
uint64_t
__rdtsc
();
#pragma intrinsic(__rdtsc)
#pragma intrinsic(__rdtsc)
#endif
#endif
#if !defined(OS_WINDOWS)
#include <sys/time.h>
#include <sys/time.h>
#endif
namespace
benchmark
{
namespace
benchmark
{
// NOTE: only i386 and x86_64 have been well tested.
// NOTE: only i386 and x86_64 have been well tested.
...
...
src/string_util.h
View file @
d49516bc
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
#include <string>
#include <string>
#include <sstream>
#include <sstream>
#include <utility>
#include <utility>
#include "internal_macros.h"
namespace
benchmark
{
namespace
benchmark
{
...
@@ -14,7 +15,7 @@ std::string HumanReadableNumber(double n);
...
@@ -14,7 +15,7 @@ std::string HumanReadableNumber(double n);
std
::
string
StringPrintF
(
const
char
*
format
,
...);
std
::
string
StringPrintF
(
const
char
*
format
,
...);
inline
std
::
ostream
&
inline
std
::
ostream
&
StringCatImp
(
std
::
ostream
&
out
)
noexcept
StringCatImp
(
std
::
ostream
&
out
)
BENCHMARK_NOEXCEPT
{
{
return
out
;
return
out
;
}
}
...
...
src/walltime.cc
View file @
d49516bc
...
@@ -13,8 +13,15 @@
...
@@ -13,8 +13,15 @@
// limitations under the License.
// limitations under the License.
#include "walltime.h"
#include "walltime.h"
#include "benchmark/macros.h"
#include "internal_macros.h"
#if defined(OS_WINDOWS)
#include <time.h>
#include <winsock.h> // for timeval
#else
#include <sys/time.h>
#include <sys/time.h>
#endif
#include <cstdio>
#include <cstdio>
#include <cstdint>
#include <cstdint>
...
@@ -92,7 +99,22 @@ private:
...
@@ -92,7 +99,22 @@ private:
WallTime
Slow
()
const
{
WallTime
Slow
()
const
{
struct
timeval
tv
;
struct
timeval
tv
;
#if defined(OS_WINDOWS)
FILETIME
file_time
;
SYSTEMTIME
system_time
;
ULARGE_INTEGER
ularge
;
const
unsigned
__int64
epoch
=
116444736000000000LL
;
GetSystemTime
(
&
system_time
);
SystemTimeToFileTime
(
&
system_time
,
&
file_time
);
ularge
.
LowPart
=
file_time
.
dwLowDateTime
;
ularge
.
HighPart
=
file_time
.
dwHighDateTime
;
tv
.
tv_sec
=
(
long
)((
ularge
.
QuadPart
-
epoch
)
/
10000000L
);
tv
.
tv_usec
=
(
long
)(
system_time
.
wMilliseconds
*
1000
);
#else
gettimeofday
(
&
tv
,
nullptr
);
gettimeofday
(
&
tv
,
nullptr
);
#endif
return
tv
.
tv_sec
+
tv
.
tv_usec
*
1e-6
;
return
tv
.
tv_sec
+
tv
.
tv_usec
*
1e-6
;
}
}
...
@@ -100,8 +122,6 @@ private:
...
@@ -100,8 +122,6 @@ private:
static_assert
(
sizeof
(
float
)
<=
sizeof
(
int32_t
),
static_assert
(
sizeof
(
float
)
<=
sizeof
(
int32_t
),
"type sizes don't allow the drift_adjust hack"
);
"type sizes don't allow the drift_adjust hack"
);
static
constexpr
double
kMaxErrorInterval
=
100e-6
;
WallTime
base_walltime_
;
WallTime
base_walltime_
;
int64_t
base_cycletime_
;
int64_t
base_cycletime_
;
int64_t
cycles_per_second_
;
int64_t
cycles_per_second_
;
...
@@ -147,7 +167,8 @@ WallTimeImp::WallTimeImp()
...
@@ -147,7 +167,8 @@ WallTimeImp::WallTimeImp()
cycles_per_second_
(
0
),
seconds_per_cycle_
(
0.0
),
cycles_per_second_
(
0
),
seconds_per_cycle_
(
0.0
),
last_adjust_time_
(
0
),
drift_adjust_
(
0
),
last_adjust_time_
(
0
),
drift_adjust_
(
0
),
max_interval_cycles_
(
0
)
{
max_interval_cycles_
(
0
)
{
cycles_per_second_
=
static_cast
<
int64_t
>
(
CyclesPerSecond
());
const
double
kMaxErrorInterval
=
100e-6
;
cycles_per_second_
=
static_cast
<
int64_t
>
(
CyclesPerSecond
());
CHECK
(
cycles_per_second_
!=
0
);
CHECK
(
cycles_per_second_
!=
0
);
seconds_per_cycle_
=
1.0
/
cycles_per_second_
;
seconds_per_cycle_
=
1.0
/
cycles_per_second_
;
max_interval_cycles_
=
max_interval_cycles_
=
...
@@ -213,15 +234,27 @@ std::string DateTimeString(bool local) {
...
@@ -213,15 +234,27 @@ std::string DateTimeString(bool local) {
typedef
std
::
chrono
::
system_clock
Clock
;
typedef
std
::
chrono
::
system_clock
Clock
;
std
::
time_t
now
=
Clock
::
to_time_t
(
Clock
::
now
());
std
::
time_t
now
=
Clock
::
to_time_t
(
Clock
::
now
());
char
storage
[
128
];
char
storage
[
128
];
std
::
size_t
written
;
std
::
tm
timeinfo
;
std
::
memset
(
&
timeinfo
,
0
,
sizeof
(
std
::
tm
));
if
(
local
)
{
if
(
local
)
{
localtime_r
(
&
now
,
&
timeinfo
);
#if defined(OS_WINDOWS)
written
=
std
::
strftime
(
storage
,
sizeof
(
storage
),
"%x %X"
,
::
localtime
(
&
now
));
#else
std
::
tm
timeinfo
;
std
::
memset
(
&
timeinfo
,
0
,
sizeof
(
std
::
tm
));
::
localtime_r
(
&
now
,
&
timeinfo
);
written
=
std
::
strftime
(
storage
,
sizeof
(
storage
),
"%F %T"
,
&
timeinfo
);
#endif
}
else
{
}
else
{
gmtime_r
(
&
now
,
&
timeinfo
);
#if defined(OS_WINDOWS)
written
=
std
::
strftime
(
storage
,
sizeof
(
storage
),
"%x %X"
,
::
gmtime
(
&
now
));
#else
std
::
tm
timeinfo
;
std
::
memset
(
&
timeinfo
,
0
,
sizeof
(
std
::
tm
));
::
gmtime_r
(
&
now
,
&
timeinfo
);
written
=
std
::
strftime
(
storage
,
sizeof
(
storage
),
"%F %T"
,
&
timeinfo
);
#endif
}
}
std
::
size_t
written
=
std
::
strftime
(
storage
,
sizeof
(
storage
),
"%F %T"
,
&
timeinfo
);
CHECK
(
written
<
arraysize
(
storage
));
CHECK
(
written
<
arraysize
(
storage
));
((
void
)
written
);
// prevent unused variable in optimized mode.
((
void
)
written
);
// prevent unused variable in optimized mode.
return
std
::
string
(
storage
);
return
std
::
string
(
storage
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment