time-sort.C   [plain text]


/* APPLE LOCAL file Radar 4591706  */
/* Test generation of DWARF call site information for inlined subroutines 
   in C++  */

// { dg-do compile }
// { dg-options "-Os -gdwarf-2 -dA" }
// { dg-final { scan-assembler "\[#@;!/|\]+\[ \t\]+DW_AT_call_line" } }

#include <algorithm>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include "time-sort.h"

int main()
{
	universal_time t0;
	unsigned N = 1000000;
	std::string* p = new std::string[N];
	universal_time t1;
	for (unsigned i = 0; i < N; ++i)
	{
		char buf[40];
		std::sprintf(buf, "12345678901234567890%u", i);
		p[i] = buf;
	}
	universal_time t2;
	std::random_shuffle(p, p+N);
	universal_time t3;
	std::sort(p, p+N);
	universal_time t4;
	delete [] p;
	universal_time t5;
	std::printf("\nN = %u\n", N);
	elapsed_time d = t1 - t0;
	std::printf("default construction time = %f\n", d.sec_ + d.nsec_/1.e9);
	d = t2 - t1;
	std::printf("assign time = %f\n", d.sec_ + d.nsec_/1.e9);
	d = t3 - t2;
	std::printf("random_shuffle time = %f\n", d.sec_ + d.nsec_/1.e9);
	d = t4 - t3;
	std::printf("sort time = %f\n", d.sec_ + d.nsec_/1.e9);
	d = t5 - t4;
	std::printf("destruct time = %f\n", d.sec_ + d.nsec_/1.e9);
	d = t5 - t0;
	std::printf("total time = %f\n", d.sec_ + d.nsec_/1.e9);
}