Index: uspace/app/testread/testread.c
===================================================================
--- uspace/app/testread/testread.c	(revision 6b3e7f7f1ea010da52ad03f26e452a512453cb0e)
+++ uspace/app/testread/testread.c	(revision fca78d43e53ede5204bbb6a1e7c71c0e0efd4556)
@@ -75,4 +75,6 @@
 	aoff64_t last_mark;
 	unsigned int i;
+	bool check_enabled = true;
+	bool progress = true;
 	
 	if (argc < 2) {
@@ -84,4 +86,14 @@
 	// Skip program name
 	--argc; ++argv;
+	
+	if (argc > 0 && str_cmp(*argv, "--no-check") == 0) {
+		check_enabled = false;
+		--argc; ++argv;
+	}
+	
+	if (argc > 0 && str_cmp(*argv, "--no-progress") == 0) {
+		progress = false;
+		--argc; ++argv;
+	}
 	
 	if (argc != 1) {
@@ -131,5 +143,5 @@
 		
 		for (i = 0; i < elems; i++) {
-			if (uint64_t_le2host(buf[i]) != expected) {
+			if (check_enabled && uint64_t_le2host(buf[i]) != expected) {
 				printf("Unexpected value at offset %" PRIuOFF64 "\n", offset);
 				fclose(file);
@@ -141,5 +153,5 @@
 		}
 		
-		if (offset >= next_mark) {
+		if (progress && offset >= next_mark) {
 			struct timeval cur_time;
 			rc = gettimeofday(&cur_time, NULL);
@@ -165,4 +177,22 @@
 	}
 	
+	struct timeval final_time;
+	rc = gettimeofday(&final_time, NULL);
+	if (rc != EOK) {
+		printf("gettimeofday failed\n");
+		fclose(file);
+		free(buf);
+		return 1;
+	}
+	
+	uint32_t total_run_time = final_time.tv_sec - start_time.tv_sec;
+	if (total_run_time > 0) {
+		printf("total bytes: %" PRIuOFF64 
+		    ", total time: %u s, avg speed: %" PRIuOFF64 " B/s\n",
+		    offset,
+		    total_run_time,
+		    offset/total_run_time);
+	}
+	
 	fclose(file);
 	free(buf);
