{"id":28,"date":"2009-03-18T10:00:01","date_gmt":"2009-03-18T00:00:01","guid":{"rendered":"http:\/\/computer-vision-software.com\/blog\/?p=28"},"modified":"2009-04-14T14:05:14","modified_gmt":"2009-04-14T04:05:14","slug":"profiling-opencv","status":"publish","type":"post","link":"http:\/\/www.computer-vision-software.com\/blog\/2009\/03\/profiling-opencv\/","title":{"rendered":"Profiling OpenCV"},"content":{"rendered":"<h1>Compiling OpenCV part 2<\/h1>\n<h2>Compiling without profiling<\/h2>\n<p>This time I compiled OpenCV library on Debian Linux installation.<\/p>\n<p>I used VMWare 6.5 and Debian OS linux distribution.<\/p>\n<p>I setup Virtual Machine to allocate 10GB hard drive space and 512 MB of system memory.<\/p>\n<p>I setup the latest version of CodeSourcery G++ toolchain (version arm-2008q3-72-arm-none-linux-gnueabi) downloaded from <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.codesourcery.com\/sgpp\/lite\/arm');\"  href=\"http:\/\/www.codesourcery.com\/sgpp\/lite\/arm\">http:\/\/www.codesourcery.com\/sgpp\/lite\/arm<\/a>. The installation dir was \/opt\/crosstool\/codesourcery<br \/>\n<!--more--><br \/>\nI used the latest version of OpenCV library (opencv-1.1pre1.tar.gz). I unpacked\u00a0\u00a0 it into my home dir.<\/p>\n<p>To compile the library I run the configure script from bash command file containing the following:<\/p>\n<pre style=\"PADDING-LEFT: 30px\">#!\/bin\/bash\r\nexport DEVROOT=\/opt\/crosstool\/codesourcery\r\nexport APP_PREFIX=arm-none-linux-gnueabi\r\nexport GCC_HOST=i686-pc-linux-gnu\r\nexport PATH=.\/:$DEVROOT\/bin:$PATH\r\n.\/configure \\\r\n--target=$APP_PREFIX \\\r\n--host=$APP_PREFIX \\\r\n--disable-shared \\\r\n--enable-static \\\r\n--without-imageio\u00a0 --without-carbon \\\r\n--without-quicktime --without-python \\\r\n--without-gtk --without-swig \\\r\n--without-v4l \\\r\n--disable-apps \\\r\n--prefix=$HOME\/arm \\\r\n--exec-prefix=$HOME\/arm \\\r\nCXXFLAGS=\"-fsigned-char\"<\/pre>\n<p>After completing configure, run the &#8220;make&#8221; and &#8220;make install&#8221; commands. That will compile the code, create static libraries and copy needed includes and libraries into specified directory ($HOME\/arm).<\/p>\n<p>After that I used modified version of facedetect.c sample which now supports yml and bmp file formats (by extension), detects faces and writes resulted image as yml and bmp files.<\/p>\n<p>To compile the application I used the following Makefile:<\/p>\n<pre style=\"PADDING-LEFT: 30px\">DEVROOT=\/opt\/crosstool\/codesourcery\r\nAPP_PREFIX=arm-none-linux-gnueabi\r\nINCLUDE_DIR=$(HOME)\/arm\/include\/opencv\r\nLIB_DIR=$(HOME)\/arm\/lib\r\nCC = $(APP_PREFIX)-gcc\r\nCPP = $(APP_PREFIX)-g++\r\nLD= $(APP_PREFIX)-ld\r\nCXXFLAGS = -I$(INCLUDE_DIR)\r\nCXXFLAGS+= -fsigned-char\r\nLDFLAGS = -g -pg -static -L$(LIB_DIR) -lcv -lhighgui -lcxcore -lml -lcvaux -lm -lstdc++ -lpthread -ldl\r\nall: facedetect.o\r\n$(CPP) facedetect.o $(LDFLAGS) -o facedetect\r\nfacedetect.o:\r\n$(CPP) $(CXXFLAGS) -c facedetect.cpp\r\nclean:\r\nrm -f facedetect facedetect.o<\/pre>\n<p>The program compiled successfully and produced &#8220;facedetect&#8221; binary which I was able to successfully run on the TS-7800 Linux board.<\/p>\n<h2>Compiling with profiling<\/h2>\n<p>To enable profiling I updated the script that runs OpenCV&#8217;s configure: I added &#8211;emable-debug and -pg and -g compiler options:<\/p>\n<pre style=\"PADDING-LEFT: 30px\">#!\/bin\/bash\r\nexport DEVROOT=\/opt\/crosstool\/codesourcery\r\nexport APP_PREFIX=arm-none-linux-gnueabi\r\nexport GCC_HOST=i686-pc-linux-gnu\r\nexport OFLAGS=-O0\r\nexport PATH=.\/:$DEVROOT\/bin:$PATH\r\n.\/configure \\\r\n--target=$APP_PREFIX \\\r\n--host=$APP_PREFIX \\\r\n--disable-shared \\\r\n--enable-static \\\r\n--enable-debug \\\r\n--without-imageio\u00a0 --without-carbon \\\r\n--without-quicktime --without-python \\\r\n--without-gtk --without-swig \\\r\n--without-v4l \\\r\n--disable-apps \\\r\n--prefix=$HOME\/arm \\\r\n--exec-prefix=$HOME\/arm \\\r\nCXXFLAGS=\"-fsigned-char -pg -g\"<\/pre>\n<p>After that I ran &#8220;make clean&#8221; and &#8220;make uninstall&#8221; to remove old libraries and object files.<\/p>\n<p>After that I rerun the configure script, make and make install. As a result, new versions (with enabled profiling support) were generated.<\/p>\n<p>I had also to slightly tweak application&#8217;s Makefile to enable profiling:<\/p>\n<pre style=\"PADDING-LEFT: 30px\">DEVROOT=\/opt\/crosstool\/codesourcery\r\nAPP_PREFIX=arm-none-linux-gnueabi\r\nINCLUDE_DIR=$(HOME)\/arm\/include\/opencv\r\nLIB_DIR=$(HOME)\/arm\/lib\r\nCC = $(APP_PREFIX)-gcc\r\nCPP = $(APP_PREFIX)-g++\r\nLD= $(APP_PREFIX)-ld\r\nCXXFLAGS = -I$(INCLUDE_DIR)\r\nCXXFLAGS+= -g -pg -fsigned-char\r\nLDFLAGS = -g -pg -static -L$(LIB_DIR) -lcv -lhighgui -lcxcore -lml -lcvaux -lm -lstdc++ -lpthread -ldl\r\nall: facedetect.o\r\n$(CPP) facedetect.o $(LDFLAGS) -o facedetect\r\nfacedetect.o:\r\n$(CPP) $(CXXFLAGS) -c facedetect.cpp\r\nclean:\r\nrm -f facedetect facedetect.o<\/pre>\n<p>I ran make for this Makefile and got a binary executable with profiling enabled. After running it on the board the gmon.out file was generated.<\/p>\n<p>Execute the &#8220;arm-none-linux-gnueabi-gprof facedetect gmon.out &gt; gprof_result.txt&#8221; command to get readable profiling result.<\/p>\n<p>Again, profiling result was not very accurate. Actual execution time was about 81 seconds, while report indicates only 40 seconds total execution time! Anyway, here is what took most of the time:<\/p>\n<p>Flat profile:<\/p>\n<pre>Each sample counts as 0.01 seconds.<\/pre>\n<pre>%\u00a0\u00a0 cumulative\u00a0\u00a0 self\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 self\u00a0\u00a0\u00a0\u00a0 total\r\ntime\u00a0\u00a0 seconds\u00a0\u00a0 seconds\u00a0\u00a0\u00a0 calls\u00a0\u00a0 s\/call\u00a0\u00a0 s\/call\u00a0 name\r\n39.80\u00a0\u00a0\u00a0\u00a0 15.91\u00a0\u00a0\u00a0 15.91\u00a0\u00a0 429405\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvRunHaarClassifierCascade\r\n22.62\u00a0\u00a0\u00a0\u00a0 24.95\u00a0\u00a0\u00a0\u00a0 9.04\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __adddf3\r\n5.25\u00a0\u00a0\u00a0\u00a0 27.05\u00a0\u00a0\u00a0\u00a0 2.10\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __muldf3\r\n4.30\u00a0\u00a0\u00a0\u00a0 28.77\u00a0\u00a0\u00a0\u00a0 1.72\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0__aeabi_f2d\r\n4.15\u00a0\u00a0\u00a0\u00a0 30.43\u00a0\u00a0\u00a0\u00a0 1.66\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 mcount_internal\r\n3.10\u00a0\u00a0\u00a0\u00a0 31.67\u00a0\u00a0\u00a0\u00a0 1.24\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_fmul\r\n2.95\u00a0\u00a0\u00a0\u00a0 32.85\u00a0\u00a0\u00a0\u00a0 1.18\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 1.18\u00a0\u00a0\u00a0\u00a0 1.78\u00a0 icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)\r\n1.50\u00a0\u00a0\u00a0\u00a0 33.45\u00a0\u00a0\u00a0\u00a0 0.60\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ____strtol_l_internal\r\n1.48\u00a0\u00a0\u00a0\u00a0 34.04\u00a0\u00a0\u00a0\u00a0 0.59\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __gnu_mcount_nc\r\n1.20\u00a0\u00a0\u00a0\u00a0 34.52\u00a0\u00a0\u00a0\u00a0 0.48\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_l2f\r\n1.05\u00a0\u00a0\u00a0\u00a0 34.94\u00a0\u00a0\u00a0\u00a0 0.42\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0__cmpdf2\r\n0.95\u00a0\u00a0\u00a0\u00a0 35.32\u00a0\u00a0\u00a0\u00a0 0.38\u00a0\u00a0 913927\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvYMLWrite(CvFileStorage*, char const*, char const*, char const*)\r\n0.90\u00a0\u00a0\u00a0\u00a0 35.68\u00a0\u00a0\u00a0\u00a0 0.36\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __floatsisf\r\n0.73\u00a0\u00a0\u00a0\u00a0 35.97\u00a0\u00a0\u00a0\u00a0 0.29\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2 \u00a0\u00a0\u00a0\u00a00.14\u00a0\u00a0\u00a0\u00a0 0.14\u00a0 icvIntegralImage_8u32s_C1R(unsigned char const*, int, int*, int, double*, int, int*, int, CvSize)\r\n0.70\u00a0\u00a0\u00a0\u00a0 36.25\u00a0\u00a0\u00a0\u00a0 0.28\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.28\u00a0\u00a0\u00a0 16.88\u00a0 cvHaarDetectObjects\r\n0.60\u00a0\u00a0\u00a0\u00a0 36.49\u00a0\u00a0\u00a0\u00a0 0.24\u00a0 3935016\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvGetErrStatus\r\n0.55\u00a0\u00a0\u00a0\u00a0 36.71\u00a0\u00a0\u00a0\u00a0 0.22\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_dcmplt\r\n0.53\u00a0\u00a0\u00a0\u00a0 36.92\u00a0\u00a0\u00a0\u00a0 0.21\u00a0 1827859\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvYMLSkipSpaces(CvFileStorage*, char*, int, int)\r\n0.53\u00a0\u00a0\u00a0\u00a0 37.13\u00a0\u00a0\u00a0\u00a0 0.21\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memset\r\n0.50 \u00a0\u00a0\u00a0\u00a037.33\u00a0\u00a0\u00a0\u00a0 0.20\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_cdcmple\r\n0.48\u00a0\u00a0\u00a0\u00a0 37.52\u00a0\u00a0\u00a0\u00a0 0.19\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __ieee754_sqrt\r\n0.43\u00a0\u00a0\u00a0\u00a0 37.69\u00a0\u00a0\u00a0\u00a0 0.17\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.17\u00a0\u00a0\u00a0\u00a0 0.20\u00a0 cvReadRawDataSlice\r\n0.40\u00a0\u00a0\u00a0\u00a0 37.85\u00a0\u00a0\u00a0\u00a0 0.16\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0cvRound(double)\r\n0.38\u00a0\u00a0\u00a0\u00a0 38.00\u00a0\u00a0\u00a0\u00a0 0.15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 29\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0 0.01\u00a0 cvSetImagesForHaarClassifierCascade\r\n0.35\u00a0\u00a0\u00a0\u00a0 38.14\u00a0\u00a0\u00a0\u00a0 0.14\u00a0 3935016\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvGetContext()\r\n0.35\u00a0\u00a0\u00a0\u00a0 38.28\u00a0\u00a0\u00a0\u00a0 0.14\u00a0\u00a0 913922\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icv_itoa(int, char*, int)\r\n0.35\u00a0\u00a0\u00a0\u00a0 38.42\u00a0\u00a0\u00a0\u00a0 0.14\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.14\u00a0\u00a0\u00a0\u00a0 0.86\u00a0 cvWriteRawData\r\n0.28\u00a0\u00a0\u00a0\u00a0 38.53\u00a0\u00a0\u00a0\u00a0 0.11\u00a0\u00a0 946095\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvSeqPush\r\n0.28\u00a0\u00a0\u00a0\u00a0 38.64\u00a0\u00a0\u00a0\u00a0 0.11\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.11\u00a0\u00a0\u00a0\u00a0 0.22\u00a0 cvCanny\r\n0.28\u00a0\u00a0\u00a0\u00a0 38.75\u00a0\u00a0\u00a0\u00a0 0.11\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 strtol\r\n0.23\u00a0\u00a0\u00a0\u00a0 38.84\u00a0\u00a0\u00a0\u00a0 0.09\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0\u00a0\u00a0 0.06\u00a0 icvXMLParseValue(CvFileStorage*, char*, CvFileNode*, int)\r\n0.20\u00a0\u00a0\u00a0\u00a0 38.92\u00a0\u00a0\u00a0\u00a0 0.08\u00a0\u00a0 913934\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvFSResizeWriteBuffer(CvFileStorage*, char*, int)\r\n0.20\u00a0\u00a0\u00a0\u00a0 39.00\u00a0\u00a0\u00a0\u00a0 0.08\u00a0\u00a0\u00a0\u00a0\u00a0 120\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvFilterColSymm_32s16s(int const**, short*, int, int, void*)\r\n0.18\u00a0\u00a0\u00a0\u00a0 39.07\u00a0\u00a0\u00a0\u00a0 0.07\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 write\r\n0.15\u00a0\u00a0\u00a0\u00a0 39.13\u00a0\u00a0\u00a0\u00a0 0.06\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Laligned\r\n0.15\u00a0\u00a0\u00a0\u00a0 39.19\u00a0\u00a0\u00a0\u00a0 0.06\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0__floatsidf\r\n0.15\u00a0\u00a0\u00a0\u00a0 39.25\u00a0\u00a0\u00a0\u00a0 0.06\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memcpy\r\n0.13\u00a0\u00a0\u00a0\u00a0 39.30\u00a0\u00a0\u00a0\u00a0 0.05\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __divdf3\r\n0.10\u00a0\u00a0\u00a0\u00a0 39.34\u00a0\u00a0\u00a0\u00a0 0.04\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memchr\r\n0.08\u00a0\u00a0\u00a0\u00a0 39.37\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0 429409\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvPoint(int, int)\r\n0.08\u00a0\u00a0\u00a0\u00a0 39.40\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0 331649\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvAlign(int, int)\r\n0.08\u00a0\u00a0\u00a0\u00a0 39.43\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0\u00a0 60404\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvFSFlush(CvFileStorage*)\r\n0.08\u00a0\u00a0\u00a0\u00a0 39.46\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0\u00a0 43649\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)\r\n0.08\u00a0\u00a0\u00a0\u00a0 39.49\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0\u00a0 13231\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvCreateSeq\r\n0.08\u00a0\u00a0\u00a0\u00a0 39.52\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0\u00a0\u00a0 0.03\u00a0 icvBGRx2Gray_8u_CnC1R(unsigned char const*, int, unsigned char*, int, CvSize, int, int)\r\n0.08\u00a0\u00a0\u00a0\u00a0 39.55\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 _wordcopy_fwd_dest_aligned\r\n0.08\u00a0\u00a0\u00a0\u00a0 39.58\u00a0\u00a0\u00a0\u00a0 0.03\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 read\r\n0.05\u00a0\u00a0\u00a0\u00a0 39.60\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0 43658\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvGetHashedKey\r\n0.05\u00a0\u00a0\u00a0\u00a0 39.62\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0 26550\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvSetSeqBlockSize\r\n0.05\u00a0\u00a0\u00a0\u00a0 39.64\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0\u00a0 0.02\u00a0 icvLUT_Transform8u_8u_C1R(unsigned char const*, int, unsigned char*, int, CvSize, unsigned char const*)\r\n0.05\u00a0\u00a0\u00a0\u00a0 39.66\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ____strtod_l_internal\r\n0.05\u00a0\u00a0\u00a0\u00a0 39.68\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fgets\r\n0.05\u00a0\u00a0\u00a0\u00a0 39.70\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 isalnum\r\n0.05\u00a0\u00a0\u00a0\u00a0 39.72\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 isalpha\r\n0.05\u00a0\u00a0\u00a0\u00a0 39.74\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 munmap\r\n0.05\u00a0\u00a0 \u00a0\u00a039.76\u00a0\u00a0\u00a0\u00a0 0.02\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sqrt\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.77\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0 57613\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvAlignLeft(int, int)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.78\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0 13470\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvGrowSeq(CvSeq*, int)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.79\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0 4299\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvSetAdd\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.80\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0 2306\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvDefaultAlloc(unsigned int, void*)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.81\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0 952\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvFilterRowSymm_8u32s(unsigned char const*, int*, void*)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.82\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0 216\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvFillConvexPoly(CvMat*, CvPoint*, int, void const*, int, int)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.83\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0 120\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 CvBaseImageFilter::fill_cyclic_buffer(unsigned char const*, int, int, int, int)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.84\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 89\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvGoNextMemBlock(CvMemStorage*)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.85\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0 0.06\u00a0 CvBaseImageFilter::process(CvMat const*, CvMat*, CvRect, CvPoint, int)<\/pre>\n<pre>0.03\u00a0\u00a0\u00a0\u00a0 39.86\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0 0.01\u00a0 icvCalcHist_8u_C1R(unsigned char**, int, unsigned char*, int, CvSize, CvHistogram*)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.87\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0 0.02\u00a0 icvReadHaarClassifier(CvFileStorage*, CvFileNode*)\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.88\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Llastword\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.89\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 _IO_getline_info\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.90\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 _IO_new_do_write\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.91\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_dcmpgt\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.92\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0_int_malloc\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.93\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 brk\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.94\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 isnanl\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.95\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 isspace\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.96\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0memcmp\r\n0.03\u00a0\u00a0\u00a0\u00a0 39.97\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 str_to_mpn<\/pre>\n<p>Remaining report data lists a lot of functions which execution took 0.00 seconds.<\/p>\n<p>As you can see, the following functions took most of the execution time:<\/p>\n<pre>%\u00a0\u00a0 cumulative\u00a0\u00a0 self\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self\u00a0\u00a0\u00a0\u00a0 total\r\ntime\u00a0\u00a0 seconds\u00a0\u00a0 seconds\u00a0\u00a0\u00a0 calls\u00a0\u00a0 s\/call\u00a0\u00a0 s\/call\u00a0 name\r\n39.80\u00a0\u00a0\u00a0\u00a0 15.91\u00a0\u00a0\u00a0 15.91\u00a0\u00a0 429405\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvRunHaarClassifierCascade\r\n22.62\u00a0\u00a0\u00a0\u00a0 24.95\u00a0\u00a0\u00a0\u00a0 9.04\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __adddf3\r\n5.25\u00a0\u00a0\u00a0\u00a0 27.05\u00a0\u00a0\u00a0\u00a0 2.10\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __muldf3\r\n4.30\u00a0\u00a0\u00a0\u00a0 28.77\u00a0\u00a0\u00a0\u00a0 1.72\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_f2d\r\n\r\n4.15\u00a0\u00a0\u00a0\u00a0 30.43\u00a0\u00a0\u00a0\u00a0 1.66\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 mcount_internal\r\n3.10\u00a0\u00a0\u00a0\u00a0 31.67\u00a0\u00a0\u00a0\u00a0 1.24\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_fmul\r\n2.95\u00a0\u00a0\u00a0\u00a0 32.85\u00a0\u00a0\u00a0\u00a0 1.18\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 1.18\u00a0\u00a0\u00a0\u00a0 1.78\u00a0 icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)\r\n1.50\u00a0\u00a0\u00a0\u00a0 33.45\u00a0\u00a0\u00a0\u00a0 0.60\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ____strtol_l_internal\r\n1.48\u00a0\u00a0\u00a0\u00a0 34.04\u00a0\u00a0\u00a0\u00a0 0.59\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __gnu_mcount_nc\r\n1.20\u00a0\u00a0\u00a0\u00a0 34.52\u00a0\u00a0\u00a0\u00a0 0.48\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_l2f\r\n1.05\u00a0\u00a0\u00a0\u00a0 34.94\u00a0\u00a0\u00a0\u00a0 0.42\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __cmpdf2\r\n0.95\u00a0\u00a0\u00a0\u00a0 35.32\u00a0\u00a0\u00a0\u00a0 0.38\u00a0\u00a0 913927\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvYMLWrite(CvFileStorage*, char const*, char const*, char const*)\r\n0.90\u00a0\u00a0\u00a0\u00a0 35.68\u00a0\u00a0\u00a0\u00a0 0.36\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __floatsisf\r\n0.73\u00a0\u00a0\u00a0\u00a0 35.97\u00a0\u00a0\u00a0\u00a0 0.29\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2\u00a0\u00a0\u00a0\u00a0 0.14\u00a0\u00a0\u00a0\u00a0 0.14\u00a0 icvIntegralImage_8u32s_C1R(unsigned char const*, int, int*, int, double*, int, int*, int, CvSize)\r\n0.70\u00a0\u00a0\u00a0\u00a0 36.25\u00a0\u00a0\u00a0\u00a0 0.28\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0 \u00a0\u00a00.28\u00a0\u00a0\u00a0 16.88\u00a0 cvHaarDetectObjects\r\n0.60\u00a0\u00a0\u00a0\u00a0 36.49\u00a0\u00a0\u00a0\u00a0 0.24\u00a0 3935016\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvGetErrStatus\r\n0.55\u00a0\u00a0\u00a0\u00a0 36.71\u00a0\u00a0\u00a0\u00a0 0.22\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_dcmplt\r\n0.53\u00a0\u00a0\u00a0\u00a0 36.92\u00a0\u00a0\u00a0\u00a0 0.21\u00a0 1827859\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icvYMLSkipSpaces(CvFileStorage*, char*, int, int)\r\n0.53\u00a0\u00a0\u00a0\u00a0 37.13\u00a0\u00a0\u00a0\u00a0 0.21\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memset\r\n0.50\u00a0\u00a0\u00a0\u00a0 37.33\u00a0\u00a0\u00a0\u00a0 0.20\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __aeabi_cdcmple\r\n0.48\u00a0\u00a0\u00a0\u00a0 37.52\u00a0\u00a0\u00a0\u00a0 0.19\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 __ieee754_sqrt\r\n0.43\u00a0\u00a0\u00a0\u00a0 37.69\u00a0\u00a0\u00a0\u00a0 0.17\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.17\u00a0\u00a0\u00a0\u00a0 0.20\u00a0 cvReadRawDataSlice\r\n0.40\u00a0\u00a0\u00a0\u00a0 37.85\u00a0\u00a0\u00a0\u00a0 0.16\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cvRound(double)\r\n0.38\u00a0\u00a0\u00a0\u00a0 38.00\u00a0\u00a0\u00a0\u00a0 0.15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 29\u00a0\u00a0\u00a0\u00a0 0.01\u00a0\u00a0\u00a0\u00a0 0.01\u00a0 cvSetImagesForHaarClassifierCascade\r\n0.35\u00a0\u00a0\u00a0\u00a0 38.14\u00a0\u00a0\u00a0\u00a0 0.14\u00a0 3935016\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0 \u00a0\u00a00.00\u00a0 icvGetContext()\r\n0.35\u00a0\u00a0\u00a0\u00a0 38.28\u00a0\u00a0\u00a0\u00a0 0.14\u00a0\u00a0 913922\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 icv_itoa(int, char*, int)\r\n0.35\u00a0\u00a0\u00a0\u00a0 38.42\u00a0\u00a0\u00a0\u00a0 0.14\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.14\u00a0\u00a0\u00a0\u00a0 0.86\u00a0 cvWriteRawData\r\n0.28\u00a0\u00a0\u00a0\u00a0 38.53\u00a0\u00a0\u00a0\u00a0 0.11\u00a0\u00a0 946095\u00a0\u00a0\u00a0\u00a0 0.00\u00a0\u00a0\u00a0\u00a0 0.00\u00a0 cvSeqPush\r\n0.28\u00a0\u00a0\u00a0\u00a0 38.64\u00a0\u00a0 \u00a0\u00a00.11\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0 0.11\u00a0\u00a0\u00a0\u00a0 0.22\u00a0 cvCanny\r\n0.28\u00a0\u00a0\u00a0\u00a0 38.75\u00a0\u00a0\u00a0\u00a0 0.11\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 strtol<\/pre>\n<p>Functions like __adddf3, __muldf3, __muldf3, __aeabi_fmul\u00a0are emulation\u00a0for floating point operations, and __gnu_mcount and mcount_internal are functions required to generate profiling output tile.<\/p>\n<h1>Performance<\/h1>\n<p>Without profiling, TS-7800 showed better results than\u00a0Linux phones:<\/p>\n<p>sqa.bmp file (resolution 314&#215;209) was detected within 5.8 seconds;<\/p>\n<p>pic.jpg.yml file (resolution 640&#215;476) was detected within 33.3 seconds.<\/p>\n<p>With profiling enabled it took about 66-68 seconds to process pic.jpg.yml file (resolution 640&#215;476).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Compiling OpenCV part 2 Compiling without profiling This time I compiled OpenCV library on Debian Linux installation. I used VMWare 6.5 and Debian OS linux distribution. I setup Virtual Machine to allocate 10GB hard drive space and 512 MB of system memory. I setup the latest version of CodeSourcery G++ toolchain (version arm-2008q3-72-arm-none-linux-gnueabi) downloaded from [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[84],"tags":[10,12,6,16],"class_list":["post-28","post","type-post","status-publish","format-standard","hentry","category-opencv","tag-arm9","tag-eabi","tag-opencv","tag-profiling"],"_links":{"self":[{"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/posts\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":0,"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/posts\/28\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/categories?post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.computer-vision-software.com\/blog\/wp-json\/wp\/v2\/tags?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}