OLD | NEW |
1 /* | 1 /* |
2 ********************************************************************** | 2 ********************************************************************** |
3 * Copyright (C) 2002-2007, International Business Machines | 3 * Copyright (C) 2002-2014, International Business Machines |
4 * Corporation and others. All Rights Reserved. | 4 * Corporation and others. All Rights Reserved. |
5 ********************************************************************** | 5 ********************************************************************** |
6 * file name: utfperf.cpp | 6 * file name: utfperf.cpp |
7 * encoding: US-ASCII | 7 * encoding: US-ASCII |
8 * tab size: 8 (not used) | 8 * tab size: 8 (not used) |
9 * indentation:4 | 9 * indentation:4 |
10 * | 10 * |
11 * created on: 2005Nov17 | 11 * created on: 2005Nov17 |
12 * created by: Raymond Yang | 12 * created by: Raymond Yang |
13 * | 13 * |
14 * Ported from utfper.c created by Markus W. Scherer | 14 * Ported from utfper.c created by Markus W. Scherer |
15 * Performance test program for Unicode converters | 15 * Performance test program for Unicode converters |
16 */ | 16 */ |
17 | 17 |
18 #include <stdio.h> | 18 #include <stdio.h> |
19 #include <stdlib.h> | 19 #include <stdlib.h> |
20 #include "unicode/uperf.h" | 20 #include "unicode/uperf.h" |
| 21 #include "cmemory.h" // for UPRV_LENGTHOF |
21 #include "uoptions.h" | 22 #include "uoptions.h" |
22 | 23 |
23 #define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) | |
24 | |
25 /* definitions and text buffers */ | 24 /* definitions and text buffers */ |
26 | 25 |
27 #define INPUT_CAPACITY (1024*1024) | 26 #define INPUT_CAPACITY (1024*1024) |
28 #define INTERMEDIATE_CAPACITY 4096 | 27 #define INTERMEDIATE_CAPACITY 4096 |
29 #define INTERMEDIATE_SMALL_CAPACITY 20 | 28 #define INTERMEDIATE_SMALL_CAPACITY 20 |
30 #define PIVOT_CAPACITY 1024 | 29 #define PIVOT_CAPACITY 1024 |
31 #define OUTPUT_CAPACITY INPUT_CAPACITY | 30 #define OUTPUT_CAPACITY INPUT_CAPACITY |
32 | 31 |
33 static char utf8[INPUT_CAPACITY]; | 32 static char utf8[INPUT_CAPACITY]; |
34 static UChar pivot[INTERMEDIATE_CAPACITY]; | 33 static UChar pivot[INTERMEDIATE_CAPACITY]; |
(...skipping 25 matching lines...) Expand all Loading... |
60 "\t--charset Charset for which to test performance, e.g. windows-1251.\n" | 59 "\t--charset Charset for which to test performance, e.g. windows-1251.\n" |
61 "\t Default: UTF-8\n" | 60 "\t Default: UTF-8\n" |
62 "\t--chunk Length (in bytes) of charset output chunks. [4096]\n" | 61 "\t--chunk Length (in bytes) of charset output chunks. [4096]\n" |
63 "\t--pivot Length (in UChars) of the UTF-16 pivot buffer, if applicable.
\n" | 62 "\t--pivot Length (in UChars) of the UTF-16 pivot buffer, if applicable.
\n" |
64 "\t [1024]\n"; | 63 "\t [1024]\n"; |
65 | 64 |
66 // Test object. | 65 // Test object. |
67 class UtfPerformanceTest : public UPerfTest{ | 66 class UtfPerformanceTest : public UPerfTest{ |
68 public: | 67 public: |
69 UtfPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status) | 68 UtfPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status) |
70 : UPerfTest(argc, argv, options, LENGTHOF(options), utfperf_usage, s
tatus) { | 69 : UPerfTest(argc, argv, options, UPRV_LENGTHOF(options), utfperf_usa
ge, status) { |
71 if (U_SUCCESS(status)) { | 70 if (U_SUCCESS(status)) { |
72 charset = options[CHARSET].value; | 71 charset = options[CHARSET].value; |
73 | 72 |
74 chunkLength = atoi(options[CHUNK_LENGTH].value); | 73 chunkLength = atoi(options[CHUNK_LENGTH].value); |
75 if (chunkLength < 1 || OUTPUT_CAPACITY < chunkLength) { | 74 if (chunkLength < 1 || OUTPUT_CAPACITY < chunkLength) { |
76 fprintf(stderr, "error: chunk length must be 1..%ld\n", (long)OU
TPUT_CAPACITY); | 75 fprintf(stderr, "error: chunk length must be 1..%ld\n", (long)OU
TPUT_CAPACITY); |
77 status = U_ILLEGAL_ARGUMENT_ERROR; | 76 status = U_ILLEGAL_ARGUMENT_ERROR; |
78 } | 77 } |
79 | 78 |
80 pivotLength = atoi(options[PIVOT_LENGTH].value); | 79 pivotLength = atoi(options[PIVOT_LENGTH].value); |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 "arguments.\n"); | 355 "arguments.\n"); |
357 return -1; | 356 return -1; |
358 } | 357 } |
359 | 358 |
360 if (fromUCallbackCount > 0) { | 359 if (fromUCallbackCount > 0) { |
361 printf("Number of fromUnicode callback calls in the last iteration: %ld\
n", (long)fromUCallbackCount); | 360 printf("Number of fromUnicode callback calls in the last iteration: %ld\
n", (long)fromUCallbackCount); |
362 } | 361 } |
363 | 362 |
364 return 0; | 363 return 0; |
365 } | 364 } |
OLD | NEW |