#include#include #include void do_inst(); void sobel ( unsigned char *data, float *results, long rows, long cols ); double time() { struct tms t; times(&t); return (t.tms_utime+t.tms_stime)/100.0; } int main ( int argc, char **argv ) { long rows, cols; long count, images; int r, c, i; double start, end; unsigned char **data; float *result; rows = argc > 1 ? atol(argv[1]) : 1024; cols = argc > 2 ? atol(argv[2]) : 1024; count = argc > 3 ? atoi(argv[3]) : 1000; images = argc > 4 ? atoi(argv[4]) : 10; data = (unsigned char **) malloc ( images * sizeof(unsigned char *) ); for ( i = 0; i < images; i++ ) { data[i] = (unsigned char *) malloc ( rows * cols ); for ( r = 0; r < rows; r++ ) { for ( c = 0; c < cols; c++ ) { data[i][r*cols+c]=random() & 0x0f; } } } result = (float *)malloc(rows*cols*sizeof(float)); start = time(); for ( i = 0; i < count; i++ ) { sobel ( data[i%images], result, rows, cols ); } end = time(); for ( r = 0; r < 10; r++ ) { for ( c = 0; c < 10; c++ ) { printf( "%7d ",data[0][r*cols+c]); } printf("\n"); } printf("\n"); for ( r = 0; r < 10; r++ ) { for ( c = 0; c < 10; c++ ) { printf( "%7.2f ",result[r*cols+c]); } printf("\n"); } printf("used: %10.4f\n",end-start); printf("FPS: %10.4f\n",count/(end-start)); return 0; }