Что Ваш лучший прием должен убежать из несбалансированного условия кавычки в ОСНОВНОМ SAS?

Идея заключается в том, что для соображений скорости и кеширования операнды должны считываться с адресов, соответствующих их естественному размеру. Чтобы это произошло, элементы структуры компоновщика компилируются так, чтобы следующий член или следующая структура были выровнены.

struct pixel {
    unsigned char red;   // 0
    unsigned char green; // 1
    unsigned int alpha;  // 4 (gotta skip to an aligned offset)
    unsigned char blue;  // 8 (then skip 9 10 11)
};

// next offset: 12

Архитектура x86 всегда могла извлекать неверные адреса. Тем не менее, он медленнее, и когда несоосность перекрывает две разные строки кэша, тогда он вытесняет две строки кэша, когда выровненный доступ будет вытеснять только один.

Некоторым архитектурам на самом деле приходится ловить ложные недочетые чтения и записи и ранние версии архитектуры ARM (той, которая развивалась во всех современных мобильных процессорах) ... ну, на самом деле они просто вернули для них плохие данные. (Они проигнорировали младшие разряды.)

Наконец, обратите внимание, что строки кэша могут быть сколь угодно большими, а компилятор не пытается угадать их или сделать компромисс между пространством и скоростью. Вместо этого решения выравнивания являются частью ABI и представляют собой минимальное выравнивание, которое в конечном итоге равномерно заполняет линию кэша.

Значения TL; DR: важны.

10
задан Martin Bøgelund 20 September 2008 в 06:41
поделиться

6 ответов

руководство предприятия 3 раньше помещало следующую строку наверху ее автоматически сгенерированного кода:

*';*";*/;run;

однако, единственный способ действительно "сбросить" от всех видов чего-то несбалансированные проблемы состоят в том, чтобы выйти из сессии SAS и сбалансировать то, что является несбалансированным прежде, чем повторно отправить код. Используя это довольно быстрое (дешевый?) взломы не обращается к первопричине.

между прочим, ods _all_ close; завершения все места назначения передозировок, включая значение по умолчанию, заканчиваются место назначения. на интерактивной сессии необходимо открыть его снова с ods results; или ods results on; по крайней мере, согласно documention., но когда я протестировал его на своих 9.2, это не работало, как показано ниже:

%put sysvlong=&sysvlong sysscpl=&sysscpl;
/* sysvlong=9.02.01M0P020508 sysscpl=X64_VSPRO */

ods _all_ close;
proc print data=sashelp.class;
run;
/* on log
WARNING: No output destinations active.
*/

ods results on;
proc print data=sashelp.class;
run;
/* on log
WARNING: No output destinations active.
*/
4
ответ дан 3 December 2019 в 21:24
поделиться

Что касается меня, я обычно Google для "SAS несбалансированная кавычка", и заканчиваются с представлением чего-то вроде этого:

*); */; /*’*/ /*”*/; %mend;

... убегать из открытых комментариев, кавычек и макро-функций.

7
ответ дан 3 December 2019 в 21:24
поделиться

Вот тот, который я использую.

 ;*';*";*/;quit;run;
 ODS _ALL_ CLOSE;
 QUIT; RUN;
5
ответ дан 3 December 2019 в 21:24
поделиться

Вы могли всегда просто давать оконечную отправленную команду операторов и повторно отправлять то, что Вы пытаетесь выполнить.

0
ответ дан 3 December 2019 в 21:24
поделиться

просто требуемый для повторения предложения AFHOOD для использования ODS _ALL_ CLOSE; оператор. Это - ключевое для включения. И удостоверьтесь, что Вы используете его каждый раз, когда Вы закончены с ODS так или иначе.

0
ответ дан 3 December 2019 в 21:24
поделиться

Да, я полагаю, что официальная документация SAS рекомендует решение, которое Вы предложили для себя.

-1
ответ дан 3 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: