CFHipsterRef Low-Level Programming on iOS & Mac OS X

Benchmarking Performance

  1. Populating an Array

     NSUInteger count = 10000000;
     float *array = malloc(count * sizeof(float));
    
     for (NSUInteger i = 0; i < count; i++)
     {
         array[i] = i;
     }
    
     float initial = 0;
     float increment = 1;
     vDSP_vramp(&initial, &increment, array, 1, count);
    
  2. Multiplying an Array

     for (NSUInteger i = 0; i < count; i++)
     {
         array[i] *= 2.0f;
     }
    
     cblas_sscal(count, 2.0f, array, 1);
    
  3. Summing an Array

     float sum = 0;
     for (NSUInteger i = 0; i < count; i++)
     {
         sum += array[i];
     }
    
     float sum = cblas_sasum(count, array, 1);
    
  4. Searching

     for (NSUInteger i = 0; i < count; i++)
     {
         array[i] = (float)arc4random();
     }
    
     NSUInteger maxLocation = 0;
     for (NSUInteger i = 0; i < count; i++)
     {
         if (array[i] > array[maxLocation])
         {
             maxLocation = i;
         }
     }
    
     NSUInteger maxLocation = cblas_isamax(count, array, 1);