Пробовал с GCC и -O3:
void foo();
void bar();
int main()
{
bool doesnt_change = true;
for (int i = 0; i != 3; ++i) {
if (doesnt_change) {
foo();
}
else {
bar();
}
}
}
Результат для основного:
_main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
call ___main
call __Z3foov
call __Z3foov
call __Z3foov
xorl %eax, %eax
leave
ret
Таким образом, он оптимизирует выбор (и развертывает меньшие циклы).
Эта оптимизация не выполняется, если hasnt_change является глобальной.
Чтобы установить модули PostgreSQL contrib
в Ubuntu или Kubuntu (или подобных дистрибутивах Linux):
sudo apt-get install postgresql-contrib
sudo /etc/init.d/postgresql-8.4 restart
postgres
). /usr/share/postgresql/8.4/contrib/
Используйте ls
, чтобы просмотреть список следующих модулей:
adminpack autoinc btree_gin btree_gist chkpass citext куб dblink dict_int dict_xsyn расстояние от земли нечеткое совпадение hstore insert_username int_aggregate isn Lo ltree moddatetime pageinspect pg_buffercache pgcrypto pg_freespacemap pgrowlocks pg_stat_statements pgstattuple pg_trgm pgxml refint seg sslinfo tablefunc test_parser timetravel tsearch2 uuid-ossp
Load the SQL files using:
psql -U user_name -d database_name -f module_name.sql
For example, if your administrative user was named postgres
and your database was named storage
and the module you wanted was cube
, you would type:
psql -U postgres -d storage -f cube.sql
After step #1 above, do:
sudo /etc/init.d/postgresql restart
cd /usr/share/postgresql/9.1/extension
(has extensions)psql
CREATE EXTENSION "uuid-ossp";