"loop.c":
Код: Выделить всё
#include
#include
#include
const int N = 1024*4;
int main(void) {
double* v = malloc(N * sizeof(double));
for(int i = 0; i < N; i++)
v[i] = sin(i);
double sum = 0;
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
for(int k = 0; k < N; k++)
sum += v[i] + 2 * v[j] + 3 * v[k];
printf("sum = %f\n", sum);
free(v);
}
Код: Выделить всё
#include
#include
#include
const int N = 1024 * 4;
int main() {
std::vector v(N);
for(int i = 0; i < N; i++)
v[i] = sin(i);
double sum = 0;
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
for(int k = 0; k < N; k++)
sum += v[i] + 2 * v[j] + 3 * v[k];
printf("sum = %f\n", sum);
}
Интересно, есть ли какой-нибудь параметр компилятора, или переменная среды, или что-то еще, что могло бы сделать версию C++ такой же экономичной с использованием памяти, как ее эквивалент C, при этом все еще используя STL (
Код: Выделить всё
std::vectorЧтобы держать вопрос в фокусе: я не заинтересован в переходе на альтернативные реализации libstdc++, но я могу использовать Clang вместо GCC, если это поможет.
Подробнее здесь: https://stackoverflow.com/questions/793 ... -using-stl
Мобильная версия