Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <chrono>
- // функция которая просто генерит случайную строку заданой длинны
- char *rand_string(char *str, size_t size)
- {
- const char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJK...";
- if (size) {
- --size;
- for (size_t n = 0; n < size; n++) {
- int key = rand() % (int) (sizeof charset - 1);
- str[n] = charset[key];
- }
- str[size] = '\0';
- }
- return str;
- }
- int main(){
- const int COUNT = 9;
- int N = 1;
- int string_size = 100000000;
- for( int _ = 0; _ < COUNT; _++ ){
- // выделение памяти
- char **words = (char **) malloc( sizeof( char * ) * N );
- for( int i = 0; i < N; i++ ){
- *( words + i ) = ( char * ) malloc( sizeof( char ) * string_size );
- }
- // генерация строк
- for( int i = 0; i < N; i++ ){
- rand_string( *( words + i ), string_size );
- }
- auto begin1 = std::chrono::high_resolution_clock::now();
- // вывод cout
- for( int i = 0; i < N; i++ ){
- std::cout << *( words + i ) << std::endl;
- }
- auto end1 = std::chrono::high_resolution_clock::now();
- auto dt1 = std::chrono::duration_cast<std::chrono::nanoseconds>(end1 - begin1);
- auto begin2 = std::chrono::high_resolution_clock::now();
- // вывод printf
- for( int i = 0; i < N; i++ ){
- printf("%s\n",*( words + i ) );
- }
- auto end2 = std::chrono::high_resolution_clock::now();
- auto dt2 = std::chrono::duration_cast<std::chrono::nanoseconds>(end2 - begin2);
- std::cerr << N << " строк, каждая длинной " << string_size << std::endl;
- std::cerr << "cout " << dt1.count() << std::endl;
- std::cerr << "printf " << dt2.count() << std::endl;
- N *= 10;
- string_size /= 10;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement