summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-4.6/test/perf/ustrperf
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2010-12-03 09:05:05 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2010-12-03 09:05:05 +0000
commite04c6a878f5044d36eaa95d4c2318e0381a32998 (patch)
tree5b7c36578140e48c0114863004c8375ea55db21d /Build/source/libs/icu/icu-4.6/test/perf/ustrperf
parentfa438554bd1a061515cd8f5f46fbe311ff08dcd6 (diff)
icu 4.6
git-svn-id: svn://tug.org/texlive/trunk@20645 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/icu/icu-4.6/test/perf/ustrperf')
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/Makefile.in79
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf.pl75
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf_r.pl79
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.cpp377
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.h549
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj273
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj.filters27
7 files changed, 1459 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/Makefile.in
new file mode 100644
index 00000000000..654d4a2f6ea
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/ustrperf
+## Copyright (c) 2001-2008, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/ustrperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = stringperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = stringperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf.pl
new file mode 100755
index 00000000000..0bcdaa0b4f8
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf.pl
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2003-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Unicode String performance: ICU ".$ICULatestVersion." vs. STDLib",
+ "headers"=>"StdLib ICU".$ICULatestVersion,
+ "operationIs"=>"Unicode String",
+ "timePerOperationIs"=>"Time per Unicode String",
+ "passes"=>"5",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p;
+if ($OnWindows) {
+ $p = $ICUPathLatest."/ustrperf/$WindowsPlatform/Release/stringperf.exe -l -u";
+} else {
+ $p = $ICUPathLatest."/ustrperf/stringperf -l -u";
+}
+
+my $tests = {
+"Object Construction(empty string)", ["$p TestStdLibCtor" , "$p TestCtor" ],
+"Object Construction(single char)", ["$p TestStdLibCtor1" , "$p TestCtor1" ],
+"Object Construction(another string)", ["$p TestStdLibCtor2" , "$p TestCtor2" ],
+"Object Construction(string literal)", ["$p TestStdLibCtor3" , "$p TestCtor3" ],
+"String Assignment(helper)", ["$p TestStdLibAssign" , "$p TestAssign" ],
+"String Assignment(string literal)", ["$p TestStdLibAssign1" , "$p TestAssign1" ],
+"String Assignment(another string)", ["$p TestStdLibAssign2" , "$p TestAssign2" ],
+"Get String or Character", ["$p TestStdLibGetch" , "$p TestGetch" ],
+"Concatenation", ["$p TestStdLibCatenate" , "$p TestCatenate" ],
+"String Scanning(char)", ["$p TestStdLibScan" , "$p TestScan" ],
+"String Scanning(string)", ["$p TestStdLibScan1" , "$p TestScan1" ],
+"String Scanning(char set)", ["$p TestStdLibScan2" , "$p TestScan2" ],
+};
+
+my $dataFiles = {
+ "",
+ [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Simplified_Chinese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Thai.txt",
+ "Testnames_Russian.txt",
+ "th18057.txt",
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
+
+# The whole command line would be something like:
+# stringperf.exe -p 5 -t 2 -f c:/src/data/perf/TestNames_Asian.txt -l -u TestStdLibCatenate \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf_r.pl b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf_r.pl
new file mode 100644
index 00000000000..f21c366266e
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf_r.pl
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines
+# * Corporation and others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+use lib '../perldriver';
+
+require "../perldriver/Common.pl";
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Unicode String performance regression: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"Unicode String",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+
+my $p1; # Previous
+my $p2; # Latest
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/ustrperf/$WindowsPlatform/Release/stringperf.exe -b -u"; # Previous
+ $p2 = $ICUPathLatest."/ustrperf/$WindowsPlatform/Release/stringperf.exe -b -u"; # Latest
+} else {
+ $p1 = $ICUPathPrevious."/ustrperf/stringperf -b -u"; # Previous
+ $p2 = $ICUPathLatest."/ustrperf/stringperf -b -u"; # Latest
+}
+
+my $dataFiles = {
+ "",
+ [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Japanese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Thai.txt",
+ "Testnames_Russian.txt",
+ "th18057.txt",
+ "thesis.txt",
+ "vfear11a.txt",
+ ]
+ };
+
+
+my $tests = {
+"Object Construction(empty string)", ["$p1 TestCtor" , "$p2 TestCtor" ],
+"Object Construction(single char)", ["$p1 TestCtor1" , "$p2 TestCtor1" ],
+"Object Construction(another string)", ["$p1 TestCtor2" , "$p2 TestCtor2" ],
+"Object Construction(string literal)", ["$p1 TestCtor3" , "$p2 TestCtor3" ],
+"String Assignment(helper)", ["$p1 TestAssign" , "$p2 TestAssign" ],
+"String Assignment(string literal)", ["$p1 TestAssign1" , "$p2 TestAssign1" ],
+"String Assignment(another string)", ["$p1 TestAssign2" , "$p2 TestAssign2" ],
+"Get String or Character", ["$p1 TestGetch" , "$p2 TestGetch" ],
+"Concatenation", ["$p1 TestCatenate" , "$p2 TestCatenate" ],
+"String Scanning(char)", ["$p1 TestScan" , "$p2 TestScan" ],
+"String Scanning(string)", ["$p1 TestScan1" , "$p2 TestScan1" ],
+"String Scanning(char set)", ["$p1 TestScan2" , "$p2 TestScan2" ],
+};
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.cpp
new file mode 100644
index 00000000000..342e060aa8c
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.cpp
@@ -0,0 +1,377 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (C) 2002-2006 International Business Machines Corporation
+ * and others. All Rights Reserved.
+ *
+ ********************************************************************/
+/*****************************************************************************
+* File stringperf.cpp
+*
+* Modification History:
+* Name Description
+* Doug Wang Second version
+* Doug Wang First Version
+******************************************************************************
+*/
+
+/**
+ * This program tests UnicodeString performance.
+ * APIs tested: UnicodeString
+ * ICU4C
+ * Windows 2000/XP, Linux
+ */
+
+#include "stringperf.h"
+
+
+int main(int argc, const char *argv[])
+{
+ UErrorCode status = U_ZERO_ERROR;
+
+ bCatenatePrealloc=TRUE;
+
+ StringPerformanceTest test(argc, argv, status);
+ if (U_FAILURE(status)){
+ return status;
+ }
+
+ int loops = LOOPS;
+ if (bCatenatePrealloc) {
+ int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
+ catICU = new UnicodeString(to_alloc,'a',0);
+ //catICU = new UnicodeString();
+
+ catStd = new stlstring();
+ catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
+ //catStd -> reserve(110000000);
+ } else {
+ catICU = new UnicodeString();
+ catStd = new stlstring();
+ }
+
+ if (test.run() == FALSE){
+ fprintf(stderr, "FAILED: Tests could not be run please check the "
+ "arguments.\n");
+ return -1;
+ }
+
+ delete catICU;
+ delete catStd;
+ return 0;
+}
+
+StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[],
+ UErrorCode &status)
+ : UPerfTest(argc, argv, status)
+{
+ filelines_=NULL;
+ StrBuffer=NULL;
+ StrBufferLen=0;
+
+ int32_t len =0;
+
+ if (status== U_ILLEGAL_ARGUMENT_ERROR){
+ //fprintf(stderr,gUsageString, "stringperf");
+ return;
+ }
+ if (U_FAILURE(status)){
+ fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n",
+ u_errorName(status));
+ return;
+ }
+
+
+ if(line_mode){
+ ULine* filelines = getLines(status);
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to read lines from file and create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+
+ filelines_ = new ULine[numLines];
+ for (int i =0; i < numLines; i++) {
+ len = filelines[i].len;
+ filelines_[i].name = new UChar[len];
+ filelines_[i].len = len;
+ memcpy(filelines_[i].name, filelines[i].name, len * U_SIZEOF_UCHAR);
+ }
+
+ }else if(bulk_mode){
+ int32_t srcLen = 0;
+ const UChar* src = getBuffer(srcLen,status);
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to read buffer from file and create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+
+ StrBuffer = new UChar[srcLen];
+ StrBufferLen = srcLen;
+ memcpy(StrBuffer, src, srcLen * U_SIZEOF_UCHAR);
+
+ }
+}
+
+StringPerformanceTest::~StringPerformanceTest()
+{
+ delete[] filelines_;
+ delete[] StrBuffer;
+}
+
+UPerfFunction* StringPerformanceTest::runIndexedTest(int32_t index, UBool exec,
+ const char *&name,
+ char* par)
+{
+ switch (index) {
+ TESTCASE(0, TestCtor);
+ TESTCASE(1, TestCtor1);
+ TESTCASE(2, TestCtor2);
+ TESTCASE(3, TestCtor3);
+ TESTCASE(4, TestAssign);
+ TESTCASE(5, TestAssign1);
+ TESTCASE(6, TestAssign2);
+ TESTCASE(7, TestGetch);
+ TESTCASE(8, TestCatenate);
+ TESTCASE(9, TestScan);
+ TESTCASE(10, TestScan1);
+ TESTCASE(11, TestScan2);
+
+ TESTCASE(12, TestStdLibCtor);
+ TESTCASE(13, TestStdLibCtor1);
+ TESTCASE(14, TestStdLibCtor2);
+ TESTCASE(15, TestStdLibCtor3);
+ TESTCASE(16, TestStdLibAssign);
+ TESTCASE(17, TestStdLibAssign1);
+ TESTCASE(18, TestStdLibAssign2);
+ TESTCASE(19, TestStdLibGetch);
+ TESTCASE(20, TestStdLibCatenate);
+ TESTCASE(21, TestStdLibScan);
+ TESTCASE(22, TestStdLibScan1);
+ TESTCASE(23, TestStdLibScan2);
+
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+}
+
+UPerfFunction* StringPerformanceTest::TestCtor()
+{
+ if (line_mode) {
+ return new StringPerfFunction(ctor, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(ctor, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestCtor1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(ctor1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(ctor1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestCtor2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(ctor2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(ctor2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestCtor3()
+{
+ if (line_mode) {
+ return new StringPerfFunction(ctor3, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(ctor3, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestAssign()
+{
+ if (line_mode) {
+ return new StringPerfFunction(assign, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(assign, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestAssign1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(assign1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(assign1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestAssign2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(assign2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(assign2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+
+UPerfFunction* StringPerformanceTest::TestGetch()
+{
+ if (line_mode) {
+ return new StringPerfFunction(getch, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(getch, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestCatenate()
+{
+ if (line_mode) {
+ return new StringPerfFunction(catenate, filelines_, numLines, uselen);
+ } else {
+ //return new StringPerfFunction(catenate, buffer, bufferLen, uselen);
+ return new StringPerfFunction(catenate, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestScan()
+{
+ if (line_mode) {
+ return new StringPerfFunction(scan, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(scan, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestScan1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(scan1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(scan1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestScan2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(scan2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(scan2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCtor()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCtor, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibCtor, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCtor1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCtor1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibCtor1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCtor2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCtor2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibCtor2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCtor3()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCtor3, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibCtor3, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibAssign()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibAssign, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibAssign, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibAssign1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibAssign1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibAssign1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibAssign2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibAssign2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibAssign2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibGetch()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibGetch, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibGetch, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCatenate()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCatenate, filelines_, numLines, uselen);
+ } else {
+ //return new StringPerfFunction(StdLibCatenate, buffer, bufferLen, uselen);
+ return new StringPerfFunction(StdLibCatenate, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibScan()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibScan, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibScan, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibScan1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibScan1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibScan1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibScan2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibScan2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibScan2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.h b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.h
new file mode 100644
index 00000000000..84d6493a405
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.h
@@ -0,0 +1,549 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+*/
+#ifndef _STRINGPERF_H
+#define _STRINGPERF_H
+
+#include <string>
+
+#include "unicode/utypes.h"
+#include "unicode/unistr.h"
+
+#include "unicode/uperf.h"
+
+typedef std::wstring stlstring;
+
+/* Define all constants for test case operations */
+#define MAXNUMLINES 40000 //Max number of lines in a test data file
+#define MAXSRCLEN 20 //Max length of one line. maybe a larger number, but it need more mem
+#define LOOPS 100 //Iterations
+//#define LOOPS 10
+#define catenate_STRLEN 2
+
+const UChar uTESTCHAR1 = 'a';
+const wchar_t wTESTCHAR1 = 'a';
+const UnicodeString uEMPTY;
+const stlstring sEMPTY;
+UnicodeString unistr;
+stlstring stlstr;
+// Simulate construction with a single-char string for basic_string
+wchar_t simulate[2]={wTESTCHAR1, 0};
+
+/* Constants for scan operation */
+U_STRING_DECL(scan_STRING, "Dot. 123. Some more data.", 25);
+const UnicodeString uScan_STRING=UnicodeString(scan_STRING);
+const stlstring sScan_STRING=stlstring(L"Dot. 123. Some more data.");
+
+/* global variables or constants for concatenation operation */
+U_STRING_DECL(uCatenate_STR, "!!", 2);
+const stlstring sCatenate_STR=stlstring(L"!!");
+static UnicodeString* catICU;
+static stlstring* catStd;
+UBool bCatenatePrealloc;
+
+/* type defines */
+typedef struct WLine WLine;
+struct WLine {
+ wchar_t name[100];
+ int32_t len;
+}; //struct to store one line of wchar_t string
+
+enum FnType { Fn_ICU, Fn_STD };
+typedef FnType FnType;
+typedef void (*ICUStringPerfFn)(const UChar* src,int32_t srcLen, UnicodeString s0);
+typedef void (*StdStringPerfFn)(const wchar_t* src,int32_t srcLen, stlstring s0);
+
+
+class StringPerfFunction : public UPerfFunction
+{
+public:
+
+ virtual long getEventsPerIteration(){
+ int loops = LOOPS;
+ if (catICU) { delete catICU;}
+ if (catStd) { delete catStd;}
+
+ if (bCatenatePrealloc) {
+
+ int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
+ catICU = new UnicodeString(to_alloc,'a',0);
+ //catICU = new UnicodeString();
+
+ catStd = new stlstring();
+ //catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
+ catStd -> reserve(110000000);
+ } else {
+ catICU = new UnicodeString();
+ catStd = new stlstring();
+ }
+
+ return -1;
+ }
+
+ virtual void call(UErrorCode* status)
+ {
+ if(line_mode_==TRUE){
+ if(uselen_){
+ for(int32_t i = 0; i< numLines_; i++){
+ if (fnType_==Fn_ICU) {
+ (*fn1_)(lines_[i].name,lines_[i].len,uS0_[i]);
+ } else {
+ (*fn2_)(wlines_[i].name,wlines_[i].len,sS0_[i]);
+ }
+ }
+ }else{
+ for(int32_t i = 0; i< numLines_; i++){
+ if (fnType_==Fn_ICU) {
+ (*fn1_)(lines_[i].name,-1,uS0_[i]);
+ } else {
+ (*fn2_)(wlines_[i].name,-1,sS0_[i]);
+ }
+ }
+ }
+ }else{
+ if(uselen_){
+ if (fnType_==Fn_ICU) {
+ (*fn1_)(src_,srcLen_,*ubulk_);
+ } else {
+ (*fn2_)(wsrc_,wsrcLen_,*sbulk_);
+ }
+ }else{
+ if (fnType_==Fn_ICU) {
+ (*fn1_)(src_,-1,*ubulk_);
+ } else {
+ (*fn2_)(wsrc_,-1,*sbulk_);
+ }
+ }
+ }
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ if(line_mode_==TRUE){
+ return numLines_;
+ }else{
+ return 1;
+ }
+ }
+
+ StringPerfFunction(ICUStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
+ {
+
+ fn1_ = func;
+ lines_=srcLines;
+ wlines_=NULL;
+ numLines_=srcNumLines;
+ uselen_=uselen;
+ line_mode_=TRUE;
+ src_ = NULL;
+ srcLen_ = 0;
+ wsrc_ = NULL;
+ wsrcLen_ = 0;
+ fnType_ = Fn_ICU;
+
+ uS0_=new UnicodeString[numLines_];
+ for(int32_t i=0; i<numLines_; i++) {
+ uS0_[i]=UnicodeString(lines_[i].name, lines_[i].len);
+ }
+ sS0_=NULL;
+ ubulk_=NULL;
+ sbulk_=NULL;
+ }
+
+ StringPerfFunction(StdStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
+ {
+
+ fn2_ = func;
+ lines_=srcLines;
+ wlines_=NULL;
+ numLines_=srcNumLines;
+ uselen_=uselen;
+ line_mode_=TRUE;
+ src_ = NULL;
+ srcLen_ = 0;
+ wsrc_ = NULL;
+ wsrcLen_ = 0;
+ fnType_ = Fn_STD;
+
+ uS0_=NULL;
+ ubulk_=NULL;
+ sbulk_=NULL;
+
+ //fillin wlines_[], sS0_[]
+ prepareLinesForStd();
+ }
+
+ StringPerfFunction(ICUStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
+ {
+
+ fn1_ = func;
+ lines_=NULL;
+ wlines_=NULL;
+ numLines_=0;
+ uselen_=uselen;
+ line_mode_=FALSE;
+ src_ = new UChar[sourceLen];
+ memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
+ srcLen_ = sourceLen;
+ wsrc_ = NULL;
+ wsrcLen_ = 0;
+ fnType_ = Fn_ICU;
+
+ uS0_=NULL;
+ sS0_=NULL;
+ ubulk_=new UnicodeString(src_,srcLen_);
+ sbulk_=NULL;
+ }
+
+ StringPerfFunction(StdStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
+ {
+
+ fn2_ = func;
+ lines_=NULL;
+ wlines_=NULL;
+ numLines_=0;
+ uselen_=uselen;
+ line_mode_=FALSE;
+ src_ = new UChar[sourceLen];
+ memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
+ srcLen_ = sourceLen;
+ fnType_ = Fn_STD;
+
+ uS0_=NULL;
+ sS0_=NULL;
+ ubulk_=NULL;
+
+ //fillin wsrc_, sbulk_
+ prepareBulkForStd();
+
+ }
+
+ ~StringPerfFunction()
+ {
+ //free(src_);
+ free(wsrc_);
+ delete[] src_;
+ delete ubulk_;
+ delete sbulk_;
+ delete[] uS0_;
+ delete[] sS0_;
+ delete[] wlines_;
+ }
+
+private:
+ void prepareLinesForStd(void)
+ {
+ UErrorCode err=U_ZERO_ERROR;
+
+ wlines_=new WLine[numLines_];
+ wchar_t ws[100];
+ int32_t wcap = sizeof(ws) / sizeof(*ws);
+ int32_t wl;
+ wchar_t* wcs;
+
+ sS0_=new stlstring[numLines_];
+ for(int32_t i=0; i<numLines_; i++) {
+ if(uselen_) {
+ wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len, &err);
+ memcpy(wlines_[i].name, wcs, wl * sizeof(wchar_t));
+ wlines_[i].len = wl;
+ sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len);
+ } else {
+ wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len-1, &err);
+ memcpy(wlines_[i].name, wcs, wl*sizeof(wchar_t));
+ wlines_[i].len = wl;
+ sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len+1);
+ }
+
+ if (U_FAILURE(err)) {
+ return;
+ }
+ }
+
+ }
+
+ void prepareBulkForStd(void)
+ {
+ UErrorCode err=U_ZERO_ERROR;
+
+ const UChar* uSrc = src_;
+ int32_t uSrcLen = srcLen_;
+ wchar_t* wDest = NULL;
+ int32_t wDestLen = 0;
+ int32_t reqLen= 0 ;
+
+ if(uselen_) {
+ /* pre-flight*/
+ u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
+
+ if(err == U_BUFFER_OVERFLOW_ERROR){
+ err=U_ZERO_ERROR;
+ wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen));
+ wDestLen = reqLen;
+ u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
+ }
+
+ if (U_SUCCESS(err)) {
+ wsrc_ = wDest;
+ wsrcLen_ = wDestLen;
+ sbulk_=new stlstring(wsrc_,wsrcLen_);
+ }
+
+ } else {
+ /* pre-flight*/
+ u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
+
+ if(err == U_BUFFER_OVERFLOW_ERROR){
+ err=U_ZERO_ERROR;
+ wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen+1));
+ wDestLen = reqLen+1;
+ u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
+ }
+
+ if (U_SUCCESS(err)) {
+ wsrc_ = wDest;
+ wsrcLen_ = wDestLen;
+ sbulk_=new stlstring(wsrc_);
+ }
+ }
+
+ //free(wDest);
+ }
+
+
+private:
+ ICUStringPerfFn fn1_;
+ StdStringPerfFn fn2_;
+
+ ULine* lines_;
+ WLine* wlines_;
+ int32_t numLines_;
+
+ UBool uselen_;
+ UChar* src_;
+ int32_t srcLen_;
+ wchar_t* wsrc_;
+ int32_t wsrcLen_;
+ UBool line_mode_;
+
+ //added for preparing testing data
+ UnicodeString* uS0_;
+ stlstring* sS0_;
+ UnicodeString* ubulk_;
+ stlstring* sbulk_;
+ FnType fnType_;
+};
+
+
+class StringPerformanceTest : public UPerfTest
+{
+public:
+ StringPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
+ ~StringPerformanceTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
+ const char *&name,
+ char *par = NULL);
+ UPerfFunction* TestCtor();
+ UPerfFunction* TestCtor1();
+ UPerfFunction* TestCtor2();
+ UPerfFunction* TestCtor3();
+ UPerfFunction* TestAssign();
+ UPerfFunction* TestAssign1();
+ UPerfFunction* TestAssign2();
+ UPerfFunction* TestGetch();
+ UPerfFunction* TestCatenate();
+ UPerfFunction* TestScan();
+ UPerfFunction* TestScan1();
+ UPerfFunction* TestScan2();
+
+ UPerfFunction* TestStdLibCtor();
+ UPerfFunction* TestStdLibCtor1();
+ UPerfFunction* TestStdLibCtor2();
+ UPerfFunction* TestStdLibCtor3();
+ UPerfFunction* TestStdLibAssign();
+ UPerfFunction* TestStdLibAssign1();
+ UPerfFunction* TestStdLibAssign2();
+ UPerfFunction* TestStdLibGetch();
+ UPerfFunction* TestStdLibCatenate();
+ UPerfFunction* TestStdLibScan();
+ UPerfFunction* TestStdLibScan1();
+ UPerfFunction* TestStdLibScan2();
+
+private:
+ long COUNT_;
+ ULine* filelines_;
+ UChar* StrBuffer;
+ int32_t StrBufferLen;
+
+};
+
+
+inline void ctor(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UnicodeString a;
+}
+
+inline void ctor1(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UnicodeString b(uTESTCHAR1);
+}
+
+inline void ctor2(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UnicodeString c(uEMPTY);
+}
+
+inline void ctor3(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UnicodeString d(src,srcLen);
+}
+
+inline UnicodeString icu_assign_helper(const UChar* src,int32_t srcLen)
+{
+ if (srcLen==-1) { return src;}
+ else { return UnicodeString(src, srcLen);}
+}
+
+inline void assign(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ unistr = icu_assign_helper(src,srcLen);
+}
+
+inline void assign1(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ unistr.setTo(src, srcLen);
+}
+
+inline void assign2(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ unistr = s0;
+}
+
+inline void getch(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ s0.charAt(0);
+}
+
+
+inline void catenate(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UTimer mystart, mystop;
+ utimer_getTime(&mystart);
+
+ *catICU += s0;
+
+ utimer_getTime(&mystop);
+ double mytime = utimer_getDeltaSeconds(&mystart,&mystop);
+ printf("\nmytime=%f \n", mytime);
+
+ *catICU += uCatenate_STR;
+}
+
+volatile int scan_idx;
+U_STRING_DECL(SCAN1, "123", 3);
+
+inline void scan(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UChar c='.';
+ scan_idx = uScan_STRING.indexOf(c);
+}
+
+inline void scan1(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ scan_idx = uScan_STRING.indexOf(SCAN1,3);
+}
+
+inline void scan2(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UChar c1='s';
+ UChar c2='m';
+ scan_idx = uScan_STRING.indexOf(c1);
+ scan_idx = uScan_STRING.indexOf(c2);
+}
+
+
+inline void StdLibCtor(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstring a;
+}
+
+inline void StdLibCtor1(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstring b(simulate);
+}
+
+inline void StdLibCtor2(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstring c(sEMPTY);
+}
+
+inline void StdLibCtor3(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ if (srcLen==-1) {
+ stlstring d(src);
+ }else {
+ stlstring d(src, srcLen);
+ }
+}
+
+inline stlstring stl_assign_helper(const wchar_t* src,int32_t srcLen)
+{
+ if (srcLen==-1) { return src;}
+ else { return stlstring(src, srcLen);}
+}
+
+inline void StdLibAssign(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstr = stl_assign_helper(src,srcLen);
+}
+
+inline void StdLibAssign1(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ if (srcLen==-1) { stlstr=src;}
+ else { stlstr.assign(src, srcLen);}
+}
+
+inline void StdLibAssign2(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstr=s0;
+}
+
+inline void StdLibGetch(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ s0.at(0);
+}
+
+inline void StdLibCatenate(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ UTimer mystart, mystop;
+ utimer_getTime(&mystart);
+
+ *catStd += s0;
+ *catStd += sCatenate_STR;
+
+ utimer_getTime(&mystop);
+ double mytime = utimer_getDeltaSeconds(&mystart,&mystop);
+ printf("\nmytime=%f \n", mytime);
+
+}
+
+inline void StdLibScan(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ scan_idx = (int) sScan_STRING.find('.');
+}
+
+inline void StdLibScan1(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ scan_idx = (int) sScan_STRING.find(L"123");
+}
+
+inline void StdLibScan2(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ scan_idx = (int) sScan_STRING.find_first_of(L"sm");
+}
+
+#endif // STRINGPERF_H
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj
new file mode 100644
index 00000000000..96757f4c674
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{523710EA-349D-45BF-8B39-289CC86E7D91}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/stringperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Release/stringperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/stringperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/stringperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/stringperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Release/stringperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/stringperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/stringperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/stringperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/stringperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/stringperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/stringperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/stringperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/stringperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/stringperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/stringperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="stringperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="stringperf.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj.filters
new file mode 100644
index 00000000000..07a54a59a2c
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{6863b0b4-8093-41e6-be7d-d901824e9418}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{065cc8c8-6c01-42a5-be22-af15d0a8540a}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{ab45cfe4-f0aa-4529-8a51-054efcf33edf}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="stringperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="stringperf.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file