HW4 Done
This commit is contained in:
@@ -3,3 +3,229 @@
|
||||
//
|
||||
|
||||
#include "sortutils.hpp"
|
||||
|
||||
void initializeRawArrayFromStdArray(const std::array<int, HOW_MANY_ELEMENTS>& source, int* dest)
|
||||
{
|
||||
for (int i = 0; i < source.size(); i++)
|
||||
{
|
||||
dest[i] = source[i];
|
||||
}
|
||||
}
|
||||
|
||||
void organPipeStdArray(std::array<int, HOW_MANY_ELEMENTS>& data)
|
||||
{
|
||||
int half = data.size() / 2;
|
||||
for (int i = 0; i < half; i++)
|
||||
{
|
||||
data[half + i] = data[half - (i + 1)];
|
||||
}
|
||||
}
|
||||
|
||||
std::chrono::time_point<std::chrono::steady_clock> getTime()
|
||||
{
|
||||
return std::chrono::steady_clock::now();
|
||||
}
|
||||
|
||||
void evaluateRawArray(const SourceArray& random, const SourceArray& sorted, const SourceArray& reversed, const SourceArray& organPipe, const SourceArray& rotated)
|
||||
{
|
||||
int array[HOW_MANY_ELEMENTS];
|
||||
std::chrono::milliseconds duration(0);
|
||||
std::cout << " ---- Raw Array Performance ----" << std::endl;
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
initializeRawArrayFromStdArray(random, array);
|
||||
auto start = getTime();
|
||||
std::sort(array, array + HOW_MANY_ELEMENTS);
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
|
||||
std::cout << std::setw(25) << "Random Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
|
||||
duration = std::chrono::milliseconds(0);
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
initializeRawArrayFromStdArray(sorted, array);
|
||||
auto start = getTime();
|
||||
std::sort(array, array + HOW_MANY_ELEMENTS);
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Sorted Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
|
||||
duration = std::chrono::milliseconds(0);
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
initializeRawArrayFromStdArray(reversed, array);
|
||||
|
||||
auto start = getTime();
|
||||
std::sort(array, array + HOW_MANY_ELEMENTS);
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Reversed Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
|
||||
duration = std::chrono::milliseconds(0);
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
initializeRawArrayFromStdArray(organPipe, array);
|
||||
|
||||
auto start = getTime();
|
||||
std::sort(array, array + HOW_MANY_ELEMENTS);
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Organ Pipe Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
|
||||
duration = std::chrono::milliseconds(0);
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
initializeRawArrayFromStdArray(rotated, array);
|
||||
|
||||
auto start = getTime();
|
||||
std::sort(array, array + HOW_MANY_ELEMENTS);
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Rotated Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
void evaluateStdArray(const SourceArray& random, const SourceArray& sorted, const SourceArray& reversed, const SourceArray& organPipe, const SourceArray& rotated)
|
||||
{
|
||||
std::chrono::milliseconds duration(0);
|
||||
std::array<int, HOW_MANY_ELEMENTS> array{};
|
||||
std::cout << " ---- std::array Performance ----" << std::endl;
|
||||
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(random.begin(), random.end(), array.begin());
|
||||
auto start = getTime();
|
||||
std::sort(array.begin(), array.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Random Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
duration = std::chrono::milliseconds(0);
|
||||
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(sorted.begin(), sorted.end(), array.begin());
|
||||
auto start = getTime();
|
||||
std::sort(array.begin(), array.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Sorted Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
duration = std::chrono::milliseconds(0);
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(reversed.begin(), reversed.end(), array.begin());
|
||||
auto start = getTime();
|
||||
std::sort(array.begin(), array.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Reversed Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
duration = std::chrono::milliseconds(0);
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(organPipe.begin(), organPipe.end(), array.begin());
|
||||
auto start = getTime();
|
||||
std::sort(array.begin(), array.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Organ Pipe Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
duration = std::chrono::milliseconds(0);
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(rotated.begin(), rotated.end(), array.begin());
|
||||
auto start = getTime();
|
||||
std::sort(array.begin(), array.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Rotated Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
void evaluateStdVector(const SourceArray& random, const SourceArray& sorted, const SourceArray& reversed, const SourceArray& organPipe, const SourceArray& rotated)
|
||||
{
|
||||
std::chrono::milliseconds duration(0);
|
||||
std::vector<int> vector(HOW_MANY_ELEMENTS, 0);
|
||||
std::cout << " ---- std::vector Performance ----" << std::endl;
|
||||
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(random.begin(), random.end(), vector.begin());
|
||||
auto start = getTime();
|
||||
std::sort(vector.begin(), vector.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
|
||||
std::cout << std::setw(25) << "Random Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
duration = std::chrono::milliseconds(0);
|
||||
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(sorted.begin(), sorted.end(), vector.begin());
|
||||
auto start = getTime();
|
||||
std::sort(vector.begin(), vector.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
|
||||
std::cout << std::setw(25) << "Sorted Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
duration = std::chrono::milliseconds(0);
|
||||
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(reversed.begin(), reversed.end(), vector.begin());
|
||||
auto start = getTime();
|
||||
std::sort(vector.begin(), vector.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
|
||||
std::cout << std::setw(25) << "Reversed Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
duration = std::chrono::milliseconds(0);
|
||||
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(organPipe.begin(), organPipe.end(), vector.begin());
|
||||
auto start = getTime();
|
||||
std::sort(vector.begin(), vector.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
|
||||
std::cout << std::setw(25) << "Organ Pipe Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
duration = std::chrono::milliseconds(0);
|
||||
|
||||
for (int i = 0; i < HOW_MAMY_TIMES; i++)
|
||||
{
|
||||
std::copy(rotated.begin(), rotated.end(), vector.begin());
|
||||
auto start = getTime();
|
||||
std::sort(vector.begin(), vector.end());
|
||||
auto end = getTime();
|
||||
duration += std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
|
||||
}
|
||||
std::cout << std::setw(25) << "Rotated Time "
|
||||
<< ": " << duration.count() << "ms" << std::endl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user