Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstdlib>
- #include <vector>
- #include <string>
- #define NOMINMAX
- #include <windows.h>
- #include <iostream>
- const int count = 250*1000;
- const int max_length = 250;
- std::vector<std::string> strings1 = std::vector<std::string>(count);
- std::vector<std::string> strings2 = std::vector<std::string>(count);
- std::string allowed_chars = std::string("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
- double elapsed_ms(LARGE_INTEGER start, LARGE_INTEGER end) {
- LARGE_INTEGER frequency;
- QueryPerformanceFrequency(&frequency);
- return (end.QuadPart - start.QuadPart) * 1000 / (double) frequency.QuadPart;
- }
- int test(char* a, char* b) {
- return *a != *b;
- }
- void compare_cstrings(int count, int length) {
- std::vector<char*> shortstrings1 = std::vector<char*>(count);
- std::vector<char*> shortstrings2 = std::vector<char*>(count);
- LARGE_INTEGER start, end;
- for (int str_id = 0; str_id < count; str_id++) {
- shortstrings1[str_id] = new char[length + 1];
- shortstrings2[str_id] = new char[length + 1];
- strings1[str_id].copy(shortstrings1[str_id], length, 0);
- strings2[str_id].copy(shortstrings2[str_id], length, 0);
- shortstrings1[str_id][length] = shortstrings2[str_id][length] = '\0';
- }
- int matches = 0;
- QueryPerformanceCounter(&start);
- for (int str_id = 0; str_id < count; str_id++)
- if (test(shortstrings1[str_id], shortstrings2[str_id]) == 0)
- matches++;
- QueryPerformanceCounter(&end);
- for (int str_id = 0; str_id < count; str_id++) {
- delete[] shortstrings1[str_id];
- delete[] shortstrings2[str_id];
- }
- printf("C-Strings\t%d\t%d\t%f\tms\t(%d matches)\n", count, length, elapsed_ms(start, end), matches);
- }
- int main(int argc, char** argv) {
- srand(0);
- for (int str_id = 0; str_id < count; str_id++) {
- std::string str1 = std::string(max_length, ' ');
- std::string str2 = std::string(max_length, ' ');
- for (int char_id = 0; char_id < max_length; char_id++) {
- str1[char_id] = allowed_chars[std::rand() % allowed_chars.length()];
- str2[char_id] = allowed_chars[std::rand() % allowed_chars.length()];
- }
- strings1[str_id] = str1;
- strings2[str_id] = str2;
- }
- for (int length = 1; length <= 250; length++)
- compare_cstrings(count, length);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement