diff --git a/c/time-measuring.c b/c/time-measuring.c
new file mode 100644
index 0000000..60ca334
--- /dev/null
+++ b/c/time-measuring.c
@@ -0,0 +1,57 @@
+#include <stdio.h>
+//#include <sys/time.h>
+#include <time.h>
+#include <stdlib.h>
+
+#define BILLION  1000000000L
+#define MILLION  1000000L
+#define THOUSAND 1000L
+
+void get_time_ts(struct timespec *t0) {
+	if (clock_gettime(CLOCK_REALTIME, t0) == -1) {
+		perror("clock_gettime");
+		exit(1);
+	}
+}
+
+long long duration_ns(struct timespec t0, struct timespec t1) {
+	return ((t1.tv_sec - t0.tv_sec)*BILLION) + (t1.tv_nsec - t0.tv_nsec);
+}
+
+void print_time_ns(long long time) {
+	printf("%llds %lldms %lldµ %lldns\n"
+		, time/BILLION
+		, (time/MILLION)%THOUSAND
+		, (time/THOUSAND)%THOUSAND
+		, time%THOUSAND
+	);
+}
+
+int main (int argc, char** argv) {
+	struct timespec t0, t1;
+
+	get_time_ts(&t0);
+
+	int i = 0;
+	while (i < 10000) { i++; }
+
+	get_time_ts(&t1);
+
+	long long time = duration_ns(t0, t1);
+
+	print_time_ns(time);
+
+	return 0;
+}
+
+/*  // For limited precision: timeval structure + gettimeofday function.
+	struct timeval t0, t1;
+
+	gettimeofday (&t0, NULL);
+	int i = 0;
+	while (i < 10000) { i++; }
+
+	gettimeofday (&t1, NULL);
+
+	printf("%ld ms\n", (t1.tv_sec - t0.tv_sec)*BILLION + (t1.tv_usec - t0.tv_usec));
+*/