Идея заключается в том, что для соображений скорости и кеширования операнды должны считываться с адресов, соответствующих их естественному размеру. Чтобы это произошло, элементы структуры компоновщика компилируются так, чтобы следующий член или следующая структура были выровнены.
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: важны.
Добавьте эти параметры к своим комментариям:
/*jslint browser: true*/
/*global $, jQuery, alert*/
Если вы хотите использовать переменные, предоставленные другими скриптами, то вам нужно сказать так:
/*global $ */
Для JSLint В Netbeans IDE перейдите к:
Tools
- Options
- Miscellaneous
- JSLint tab
- Text area
в разделе " Предопределено (, разделено) ":
Теперь переменная JQuery $ равна рассмотренные во всем коде.