[c++] problem z kompilacją programu z timespec
Ostatnio zmodyfikowano 2015-11-05 10:11
robaczek122 Temat założony przez niniejszego użytkownika |
[c++] problem z kompilacją programu z timespec » 2015-11-04 21:19:14 Chciałem przetestować kod z forum: http://stackoverflow.com/questions/2872543/printf-vs-cout-in-c/2873251#2873251 #include <stdio.h> #include <iostream> #include <ctime>
class TimedSection { char const * d_name; timespec d_start; public: TimedSection( char const * name ) : d_name( name ) { clock_gettime( CLOCK_REALTIME, & d_start ); } ~TimedSection() { timespec end; clock_gettime( CLOCK_REALTIME, & end ); double duration = 1e3 *( end.tv_sec - d_start.tv_sec ) + 1e - 6 *( end.tv_nsec - d_start.tv_nsec ); std::cerr << d_name << '\t' << std::fixed << duration << " ms\n"; } };
int main() { const int iters = 10000000; char const * text = "01234567890123456789"; { TimedSection s( "cout with only endl" ); for( int i = 0; i < iters; ++i ) std::cout << std::endl; } { TimedSection s( "cout with only '\\n'" ); for( int i = 0; i < iters; ++i ) std::cout << '\n'; } { TimedSection s( "printf with only '\\n'" ); for( int i = 0; i < iters; ++i ) printf( "\n" ); } { TimedSection s( "cout with string constant and endl" ); for( int i = 0; i < iters; ++i ) std::cout << "01234567890123456789" << std::endl; } { TimedSection s( "cout with string constant and '\\n'" ); for( int i = 0; i < iters; ++i ) std::cout << "01234567890123456789\n"; } { TimedSection s( "printf with string constant and '\\n'" ); for( int i = 0; i < iters; ++i ) printf( "01234567890123456789\n" ); } { TimedSection s( "cout with some stuff and endl" ); for( int i = 0; i < iters; ++i ) std::cout << text << "01234567890123456789" << i << std::endl; } { TimedSection s( "cout with some stuff and '\\n'" ); for( int i = 0; i < iters; ++i ) std::cout << text << "01234567890123456789" << i << '\n'; } { TimedSection s( "printf with some stuff and '\\n'" ); for( int i = 0; i < iters; ++i ) printf( "%s01234567890123456789%i\n", text, i ); } }
Niestety podczas kompilacji pokazują się błędy | 7 | error: 'timespec' does not name a type | || In constructor 'TimedSection::TimedSection(const char*)':| | 12 | error: 'CLOCK_REALTIME' was not declared in this scope | | 12 | error: 'd_start' was not declared in this scope | . . . ||=== Build finished: 10 errors, 0 warnings( 0 minutes, 0 seconds ) === |
Googlowałem że może timespec d_start; powinien być jako struct timespec d_start, ale jednak nie pomogło. |
|
j23 |
» 2015-11-05 10:11:58 Według dokumentacji timespec weszło do standardu C dopiero od '11 roku, więc pytanie jest takie, czy twoje środowisko zawiera najnowsze pliki biblioteczne dla C.
Dlaczego nie użyjesz funkcji z biblioteki std::chrono? |
|
« 1 » |