perftest.pgc

来自「PostgreSQL7.4.6 for Linux」· PGC 代码 · 共 144 行

PGC
144
字号
#include <stdio.h>#include <sys/time.h>#include <unistd.h>exec sql include sqlca;exec sql whenever sqlerror sqlprint;exec sql whenever not found sqlprint;static voidprint_result(long sec, long usec, char *text){	if (usec < 0)	{		sec--;		usec+=1000000;	}	printf("I needed %ld seconds and %ld microseconds for the %s test.\n", sec, usec, text);	exec sql vacuum;	sleep(1);}intmain (){exec sql begin declare section;	long i;exec sql end declare section;	struct timeval tvs, tve;	exec sql connect to mm;	exec sql create table perftest1(number int4, ascii char(16));	exec sql create unique index number1 on perftest1(number);	exec sql create table perftest2(number int4, next_number int4);	exec sql create unique index number2 on perftest2(number);	exec sql commit;	exec sql set autocommit to on;	exec sql begin transaction;	gettimeofday(&tvs, NULL);	for (i = 0;i < 1407; i++)	{		exec sql begin declare section;			char text[16];		exec sql end declare section;		sprintf(text, "%ld", i);		exec sql insert into perftest1(number, ascii) values (:i, :text);		exec sql insert into perftest2(number, next_number) values (:i, :i+1);	}	exec sql commit;	gettimeofday(&tve, NULL);	print_result(tve.tv_sec - tvs.tv_sec, tve.tv_usec - tvs.tv_usec, "insert");	exec sql begin transaction;	gettimeofday(&tvs, NULL);	for (i = 0;i < 1407; i++)	{		exec sql begin declare section;			char text[16];		exec sql end declare section;		exec sql select ascii into :text from perftest1 where number = :i;	}	exec sql commit;	gettimeofday(&tve, NULL);	print_result(tve.tv_sec - tvs.tv_sec, tve.tv_usec - tvs.tv_usec, "selection&projection");	exec sql begin transaction;	gettimeofday(&tvs, NULL);	for (i = 0;i < 1407; i++)	{		exec sql begin declare section;			char text[16];		exec sql end declare section;		exec sql select perftest1.ascii into :text from perftest1, perftest2 where perftest1.number = perftest2.number and perftest2.number = :i;	}	exec sql commit;	gettimeofday(&tve, NULL);	print_result(tve.tv_sec - tvs.tv_sec, tve.tv_usec - tvs.tv_usec, "join");	exec sql begin transaction;	gettimeofday(&tvs, NULL);	exec sql update perftest2 set next_number = next_number + 1;	exec sql commit;	gettimeofday(&tve, NULL);	print_result(tve.tv_sec - tvs.tv_sec, tve.tv_usec - tvs.tv_usec, "update");	exec sql begin transaction;	gettimeofday(&tvs, NULL);	exec sql delete from perftest2;	exec sql commit;	gettimeofday(&tve, NULL);	print_result(tve.tv_sec - tvs.tv_sec, tve.tv_usec - tvs.tv_usec, "delete");	exec sql set autocommit = off;	exec sql drop index number2;	exec sql drop table perftest2;	exec sql drop index number1;	exec sql drop table perftest1;	exec sql commit;	exec sql disconnect;	return (0);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?