Skip to content

Commit 2249c91

Browse files
committed
Merge branch 'release/v2.8.0'
2 parents b9bbe63 + 38a3495 commit 2249c91

File tree

10 files changed

+207
-120
lines changed

10 files changed

+207
-120
lines changed

.travis.yml

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ addons:
2727
- g++-6
2828
- g++-7
2929
- g++-8
30+
- g++-9
3031

3132
sources: &sources
3233
- ubuntu-toolchain-r-test
@@ -37,6 +38,7 @@ cache:
3738
- ${TRAVIS_BUILD_DIR}/deps/llvm-5.0.1
3839
- ${TRAVIS_BUILD_DIR}/deps/llvm-7.0.0
3940
- ${TRAVIS_BUILD_DIR}/deps/llvm-8.0.0
41+
- ${TRAVIS_BUILD_DIR}/deps/llvm-9.0.0
4042

4143
matrix:
4244
exclude:
@@ -67,7 +69,12 @@ matrix:
6769

6870
# Clang 8.0.0
6971
- os: linux
70-
env: LLVM_VERSION=7.0.0 CMAKE_OPTIONS=""
72+
env: LLVM_VERSION=8.0.0 CMAKE_OPTIONS=""
73+
compiler: clang
74+
75+
# Clang 9.0.0
76+
- os: linux
77+
env: LLVM_VERSION=9.0.0 CMAKE_OPTIONS=""
7178
compiler: clang
7279

7380
# GCC 6
@@ -85,10 +92,15 @@ matrix:
8592
env: COMPILER=g++-8 CMAKE_OPTIONS=""
8693
compiler: gcc
8794

88-
# GCC 8
95+
# GCC 9
96+
- os: linux
97+
env: COMPILER=g++-9 CMAKE_OPTIONS=""
98+
compiler: gcc
99+
100+
# GCC 9
89101
- os: linux
90102
name: Complete Build
91-
env: COMPILER=g++-8 CMAKE_OPTIONS="-DCELERO_ENABLE_EXPERIMENTS=1"
103+
env: COMPILER=g++-9 CMAKE_OPTIONS="-DCELERO_ENABLE_EXPERIMENTS=1"
92104
compiler: gcc
93105

94106
##########################################################################
@@ -110,6 +122,9 @@ matrix:
110122
- os: osx
111123
osx_image: xcode11
112124

125+
- os: osx
126+
osx_image: xcode12
127+
113128
before_install:
114129
- git submodule update --init --recursive
115130

CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,15 @@ macro(CeleroSetDefaultCompilerOptions)
3434
target_compile_options(${PROJECT_NAME} PRIVATE /MP)
3535
target_compile_options(${PROJECT_NAME} PRIVATE /D_SCL_SECURE_NO_WARNINGS)
3636
target_compile_options(${PROJECT_NAME} PRIVATE /permissive-)
37+
if (NOT CELERO_COMPILE_DYNAMIC_LIBRARIES)
38+
target_compile_options(${PROJECT_NAME} PRIVATE /MT$<$<CONFIG:Debug>:d>)
39+
endif()
3740

3841
if(CELERO_TREAT_WARNINGS_AS_ERRORS)
3942
target_compile_options(${PROJECT_NAME} PRIVATE /WX)
4043
endif()
4144
set_target_properties(${PROJECT_NAME} PROPERTIES
42-
ARCHIVE_OUTPUT_NAME "${PROJECT_NAME}.dll")
45+
ARCHIVE_OUTPUT_NAME "${PROJECT_NAME}$<$<CONFIG:Debug>:d>$<$<BOOL:${CELERO_COMPILE_DYNAMIC_LIBRARIES}>:.dll>")
4346

4447
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
4548
target_compile_options(${PROJECT_NAME} PRIVATE -Wall)
@@ -89,8 +92,10 @@ option(CELERO_TREAT_WARNINGS_AS_ERRORS "Treat compile warnings as errors." ON)
8992

9093
if(CELERO_COMPILE_DYNAMIC_LIBRARIES)
9194
SET(CELERO_USER_DEFINED_SHARED_OR_STATIC "SHARED")
95+
message(STATUS "Celero: Shared lib build")
9296
else()
9397
SET(CELERO_USER_DEFINED_SHARED_OR_STATIC "STATIC")
98+
message(STATUS "Celero: Static lib build")
9499
endif()
95100

96101
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

README.md

Lines changed: 101 additions & 86 deletions
Large diffs are not rendered by default.

include/celero/ExperimentResult.h

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,18 +70,33 @@ namespace celero
7070
///
7171
///
7272
///
73-
Statistics<int64_t>* getTimeStatistics();
73+
const Statistics<int64_t>& getTimeStatistics() const;
74+
75+
///
76+
///
77+
///
78+
const Statistics<int64_t>& getRAMStatistics() const;
7479

7580
///
7681
/// Adds a run time sample during experiment execution.
7782
///
7883
void addRunTimeSample(const uint64_t x);
7984

85+
///
86+
/// Adds a memory sample during experiment execution.
87+
///
88+
void addMemorySample(const int64_t x);
89+
8090
///
8191
/// Returns the best run time sample observed.
8292
///
8393
uint64_t getRunTime() const;
8494

95+
///
96+
/// Returns the best RAM usage sample observed.
97+
///
98+
int64_t getRAM() const;
99+
85100
///
86101
/// \brief Get the number of computed microseconds per iteration (i.e. a single call to the code under test.)
87102
///

include/celero/Memory.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
///
2121

2222
#include <celero/Export.h>
23+
2324
#include <cstdint>
2425
#include <string>
2526

@@ -30,8 +31,9 @@ namespace celero
3031
///
3132
/// Contans all Memory measurements (in bytes)
3233
///
33-
struct RAMReport
34+
class CELERO_EXPORT RAMReport
3435
{
36+
public:
3537
int64_t RamSystemTotal{0};
3638
int64_t RamSystemAvailable{0};
3739
int64_t RamSystemUsed{0};

src/Archive.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ void Archive::add(std::shared_ptr<celero::ExperimentResult> x)
309309

310310
found->CurrentBaseline = x->getBaselineMeasurement();
311311
found->CurrentBaseline_TimeSinceEpoch = this->pimpl->now();
312-
found->CurrentStats = *x->getTimeStatistics();
312+
found->CurrentStats = x->getTimeStatistics();
313313

314314
if(found->Failure || found->CurrentBaseline <= found->MinBaseline)
315315
{
@@ -357,15 +357,15 @@ void Archive::add(std::shared_ptr<celero::ExperimentResult> x)
357357

358358
r.CurrentBaseline = x->getBaselineMeasurement();
359359
r.CurrentBaseline_TimeSinceEpoch = r.FirstRanDate;
360-
r.CurrentStats = *x->getTimeStatistics();
360+
r.CurrentStats = x->getTimeStatistics();
361361

362362
r.MaxBaseline = x->getBaselineMeasurement();
363363
r.MaxBaseline_TimeSinceEpoch = r.FirstRanDate;
364-
r.MaxStats = *x->getTimeStatistics();
364+
r.MaxStats = x->getTimeStatistics();
365365

366366
r.MinBaseline = x->getBaselineMeasurement();
367367
r.MinBaseline_TimeSinceEpoch = r.FirstRanDate;
368-
r.MinStats = *x->getTimeStatistics();
368+
r.MinStats = x->getTimeStatistics();
369369

370370
this->pimpl->results.push_back(r);
371371
}

src/Executor.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <celero/Console.h>
2323
#include <celero/Exceptions.h>
2424
#include <celero/Executor.h>
25+
#include <celero/Memory.h>
2526
#include <celero/Print.h>
2627
#include <celero/TestVector.h>
2728
#include <celero/UserDefinedMeasurementCollector.h>
@@ -107,7 +108,8 @@ bool ExecuteProblemSpace(std::shared_ptr<celero::ExperimentResult> r)
107108
// Save test results
108109
if(record == true)
109110
{
110-
r->getTimeStatistics()->addSample(testTime);
111+
r->addRunTimeSample(testTime);
112+
r->addMemorySample(celero::GetRAMVirtualUsedByCurrentProcess());
111113
r->getExperiment()->incrementTotalRunTime(testTime);
112114

113115
if(udmCollector != nullptr)

src/ExperimentResult.cpp

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,21 +100,36 @@ uint64_t ExperimentResult::getProblemSpaceIterations() const
100100
return this->pimpl->problemSpaceIterations;
101101
}
102102

103-
Statistics<int64_t>* ExperimentResult::getTimeStatistics()
103+
const Statistics<int64_t>& ExperimentResult::getTimeStatistics() const
104104
{
105-
return &this->pimpl->statsTime;
105+
return this->pimpl->statsTime;
106106
}
107107

108-
void ExperimentResult::addRunTimeSample(const uint64_t runTime)
108+
const Statistics<int64_t>& ExperimentResult::getRAMStatistics() const
109109
{
110-
this->pimpl->statsTime.addSample(static_cast<int64_t>(runTime));
110+
return this->pimpl->statsRAM;
111+
}
112+
113+
void ExperimentResult::addRunTimeSample(const uint64_t x)
114+
{
115+
this->pimpl->statsTime.addSample(static_cast<int64_t>(x));
116+
}
117+
118+
void ExperimentResult::addMemorySample(const int64_t x)
119+
{
120+
this->pimpl->statsRAM.addSample(static_cast<int64_t>(x));
111121
}
112122

113123
uint64_t ExperimentResult::getRunTime() const
114124
{
115125
return static_cast<uint64_t>(this->pimpl->statsTime.getMin());
116126
}
117127

128+
int64_t ExperimentResult::getRAM() const
129+
{
130+
return static_cast<uint64_t>(this->pimpl->statsRAM.getMin());
131+
}
132+
118133
double ExperimentResult::getUsPerCall() const
119134
{
120135
if(this->pimpl->failure == false)

src/Print.cpp

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ enum PrintConstants : size_t
3737
{
3838
ColumnSeperatorWidth = 3,
3939
DoubleDecimals = 5,
40-
NumberOfColumns = 8,
40+
NumberOfColumns = 9,
4141
ColumnWidth = 15
4242
};
4343

@@ -67,6 +67,7 @@ std::string PrintCenter(const std::string& s, const size_t w = PrintConstants::C
6767
ss << " ";
6868
}
6969

70+
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
7071
ss << " | ";
7172
return ss.str();
7273
}
@@ -90,6 +91,8 @@ std::string PrintColumn(const double x, const size_t decDigits = PrintConstants:
9091
ss.precision(decDigits);
9192
ss << x;
9293

94+
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
95+
ss << " | ";
9396
return ss.str();
9497
}
9598

@@ -107,8 +110,10 @@ std::string PrintColumn(const int64_t x, const size_t width = PrintConstants::Co
107110

108111
// set width around displayed #
109112
ss.width(width);
113+
ss << x;
110114

111-
ss << x << " | ";
115+
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
116+
ss << " | ";
112117
return ss.str();
113118
}
114119

@@ -126,8 +131,10 @@ std::string PrintColumn(const uint64_t x, const size_t width = PrintConstants::C
126131

127132
// set width around displayed #
128133
ss.width(width);
134+
ss << x;
129135

130-
ss << x << " | ";
136+
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
137+
ss << " | ";
131138
return ss.str();
132139
}
133140

@@ -151,13 +158,15 @@ std::string PrintStrColumnAligned(const std::string& x, const size_t width = Pri
151158
// Truncate
152159
std::string xTrunc = x;
153160
xTrunc = xTrunc.substr(0, width);
154-
ss << xTrunc << " | ";
161+
ss << xTrunc;
155162
}
156163
else
157164
{
158-
ss << x << " | ";
165+
ss << x;
159166
}
160167

168+
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
169+
ss << " | ";
161170
return ss.str();
162171
}
163172

@@ -173,6 +182,8 @@ std::string PrintColumnRight(const std::string& x, const size_t width = PrintCon
173182

174183
std::string PrintHRule(const size_t additionalColumns = 0)
175184
{
185+
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
186+
176187
std::stringstream ss;
177188
std::string column{":"};
178189

@@ -209,7 +220,8 @@ namespace celero
209220
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
210221

211222
std::cout << "|" << PrintCenter("Group") << PrintCenter("Experiment") << PrintCenter("Prob. Space") << PrintCenter("Samples")
212-
<< PrintCenter("Iterations") << PrintCenter("Baseline") << PrintCenter("us/Iteration") << PrintCenter("Iterations/sec");
223+
<< PrintCenter("Iterations") << PrintCenter("Baseline") << PrintCenter("us/Iteration") << PrintCenter("Iterations/sec")
224+
<< PrintCenter("RAM (bytes)");
213225

214226
for(size_t i = PrintConstants::NumberOfColumns; i < this->columnWidths.size(); ++i)
215227
{
@@ -285,17 +297,18 @@ namespace celero
285297
celero::console::SetConsoleColor(temp_color);
286298
std::cout << PrintColumn(x->getBaselineMeasurement());
287299
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
288-
std::cout << " | ";
289300

290301
celero::console::SetConsoleColor(temp_color);
291302
std::cout << PrintColumn(x->getUsPerCall());
292303
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
293-
std::cout << " | ";
294304

295305
celero::console::SetConsoleColor(temp_color);
296306
std::cout << PrintColumn(x->getCallsPerSecond(), 2);
297307
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
298-
std::cout << " | ";
308+
309+
celero::console::SetConsoleColor(temp_color);
310+
std::cout << PrintColumn(x->getRAM());
311+
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
299312

300313
std::unordered_map<std::string, double> udmValues;
301314

@@ -316,8 +329,6 @@ namespace celero
316329
else
317330
{
318331
std::cout << PrintColumn(udmValues.at(fieldName), 2, this->columnWidths[i + PrintConstants::NumberOfColumns]);
319-
celero::console::SetConsoleColor(celero::console::ConsoleColor::Default);
320-
std::cout << " | ";
321332
}
322333
}
323334

src/ResultTable.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,12 @@ void ResultTable::add(std::shared_ptr<celero::ExperimentResult> x)
109109
if(this->pimpl->hasWrittenHeader == false)
110110
{
111111
// Print the header for the table.
112-
this->pimpl->ofs << "Group,Experiment,Problem "
113-
"Space,Samples,Iterations,Failure,Baseline,";
112+
this->pimpl->ofs << "Group,Experiment,Problem Space,Samples,Iterations,Failure,";
114113

115-
this->pimpl->ofs << "us/Iteration,Iterations/sec,Min (us),Mean (us),Max "
116-
"(us),Variance,Standard Deviation,Skewness,Kurtosis,Z Score,";
114+
this->pimpl->ofs << "Baseline,us/Iteration,Iterations/sec,";
115+
116+
this->pimpl->ofs << "T Min (us),T Mean (us),T Max (us),T Variance,T Standard Deviation,T Skewness,T Kurtosis,T Z Score,";
117+
this->pimpl->ofs << "R Min (us),R Mean (us),R Max (us),R Variance,R Standard Deviation,R Skewness,R Kurtosis,R Z Score,";
117118

118119
// User Defined Metrics
119120
const auto udmCollector = x->getUserDefinedMeasurements();
@@ -136,10 +137,16 @@ void ResultTable::add(std::shared_ptr<celero::ExperimentResult> x)
136137
this->pimpl->ofs << x->getBaselineMeasurement() << "," << x->getUsPerCall() << "," << x->getCallsPerSecond() << ",";
137138

138139
// Statistics
139-
this->pimpl->ofs << x->getTimeStatistics()->getMin() << "," << x->getTimeStatistics()->getMean() << "," << x->getTimeStatistics()->getMax()
140-
<< "," << x->getTimeStatistics()->getVariance() << "," << x->getTimeStatistics()->getStandardDeviation() << ","
141-
<< x->getTimeStatistics()->getSkewness() << "," << x->getTimeStatistics()->getKurtosis() << ","
142-
<< x->getTimeStatistics()->getZScore() << ",";
140+
this->pimpl->ofs << x->getTimeStatistics().getMin() << "," << x->getTimeStatistics().getMean() << "," << x->getTimeStatistics().getMax()
141+
<< "," << x->getTimeStatistics().getVariance() << "," << x->getTimeStatistics().getStandardDeviation() << ","
142+
<< x->getTimeStatistics().getSkewness() << "," << x->getTimeStatistics().getKurtosis() << ","
143+
<< x->getTimeStatistics().getZScore() << ",";
144+
145+
// Statistics
146+
this->pimpl->ofs << x->getRAMStatistics().getMin() << "," << x->getRAMStatistics().getMean() << "," << x->getRAMStatistics().getMax() << ","
147+
<< x->getRAMStatistics().getVariance() << "," << x->getRAMStatistics().getStandardDeviation() << ","
148+
<< x->getRAMStatistics().getSkewness() << "," << x->getRAMStatistics().getKurtosis() << ","
149+
<< x->getRAMStatistics().getZScore() << ",";
143150

144151
// User Defined Metrics
145152
const auto udmCollector = x->getUserDefinedMeasurements();

0 commit comments

Comments
 (0)