Обычно JSON более компактен, и быстрее проанализировать.
Предпочитают XML если:
Один важный случай (почти) XML: попытайтесь обнаружить, когда отправка отрывков HTML будет более выгодной, чем отправка необработанных данных. AHAH может сделать чудеса в простых приложениях, все же часто пропускаемых. Обычно этот стиль предполагает, что сервер отправляет отрывки HTML, которые будут встроены в веб-странице без обработки.
Обычно в CSS случаев AHAH усиливается к макс. для массирования отрывков визуально и реализации простых условных выражений как сокрытие/показ соответствующих частей отрывка с помощью определенных для пользователя или специализированных настроек.
Я думаю, что решение здесь состоит в том, чтобы сообщить gcc, что ваш тип vec2_t
на самом деле является вектором; тогда вы можете просто вычислить инвариантное значение цикла и рассматривать его как обычную переменную (за исключением того, что компилятор знает, что это векторный тип):
typedef double vec2_t __attribute__ ((vector_size (16)));
void function()
{
/* get a specific value set up, e.g. */
vec2_t invariant;
asm( "some calculations, soring result in invariant."
: "=x" (invariant) );
for( int i = 0; i<N; i++ ){
asm(
"Some calculations;"
"on an element of;"
"a data set.;"
"The value in xmm1;"
"is needed;"
: "x" (invariant) // and other SSE arguments
);
}
}
Я просто скомпилировал это с помощью простого вычисления внутри цикла и по крайней мере с оптимизацией на уровне 1 значение инварианта
сохраняется в регистре XMM во время цикла.
(Все это предполагает, что вам не требуется инвариант цикла в явном регистре XMM; и что вы можете использовать обычное распределение регистров GCC).
Я думаю, что лучше оставить регистр присваивания компилятору. Вероятно, он сможет отслеживать это лучше, чем вы. GCC уже будет использовать расширения SSE, но если вы уверены, что знаете лучше, используйте функции GCC __builtin. Честно говоря, я немного сомневаюсь, что вы сделаете это быстрее.
Удачи!
Эти сайты, вероятно, интересно посмотреть.
Я привык работать с ассемблером и C, и я бы здесь написал всю функцию на ассемблере. Если у вас гибкая система сборки, я рекомендую собрать функцию ASM отдельно и связать ее со своим приложением. Единственная проблема заключается в том, что функция не может быть встроена компилятором.
void function (void); // C
extern "C" function (void); // C ++