Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postgres/src/interfaces/ecpg/test/performance/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 2 kB image not shown  

Quelle  perftest.pgc   Sprache: unbekannt

 
Spracherkennung für: .pgc vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>

exec sql include sqlca;
exec sql include ../regression;

exec sql whenever sqlerror sqlprint;
exec sql whenever not found sqlprint;

static void
print_result(long sec, long usec, char *text)
{
 if (usec < 0)
 {
  sec--;
  usec+=1000000;
 }
 printf("%ld seconds and %ld microseconds for test %s\n", sec, usec, text);
 exec sql vacuum;
 sleep(1);
}

int
main (void)
{
exec sql begin declare section;
 long i;
exec sql end declare section;
 struct timeval tvs, tve;

 exec sql connect to REGRESSDB1;

 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;
}

[Dauer der Verarbeitung: 0.12 Sekunden, vorverarbeitet 2026-08-08]