@ Galo Torres Sevilla - лучший ответ, поэтому я добавлю его как правильный ответ:
Первый вариант лучше. В каждом сообщении всегда должна быть ссылка на того, кто его опубликовал. С другой стороны, пользователям не нужно указывать ссылки на свои сообщения. Представьте себе ситуацию, когда вы хотите отображать только имя пользователя и аватарку. Зачем вам выбирать все сообщения в этом случае? Кроме того, модель в вашем случае не должна содержать переменных, которые указывают на ссылочные типы, такие как изображения, лучше хранить их в типах значений, таких как String, которая указывает на URL-адрес изображения, и загружать изображение по мере необходимости.
blockquote>- Гало Торрес Севилья
На этот вопрос нелегко ответить по той простой причине, что производительность одного алгоритма относительно другого зависит в такой же степени от сочетания компилятор / процессор / структура данных, как и от самого алгоритма, как вы наверняка знать
Поэтому ваш подход попробовать пару из них кажется достаточно хорошим. И да, быстрая сортировка должна быть довольно быстрой. Если вы этого не сделали, вы можете попробовать сортировку вставок, которая часто работает лучше для небольших наборов данных. Это сказало, просто выбирайте алгоритм сортировки, который делает работу достаточно быстро. Как правило, вы не получите в 10 раз быстрее, просто выбрав «правильный» алгоритм.
Чтобы получить существенное ускорение, лучше часто использовать больше структур. Некоторые идеи, которые работали для меня в прошлом с крупномасштабными проблемами:
Можете ли вы эффективно предварительно рассчитать при создании вокселей и сохранить 28 вместо 27 поплавков?
Достаточно ли приблизительное решение? Если так что, просто посмотрите на медиану, скажем, 9 значения, так как "в целом это может быть Ожидается, что значения относительно закрыть. "Или вы можете заменить его среднее до тех пор, пока значения относительно близко.
Тебе действительно нужна медиана для всех? миллиарды вокселей? Может быть, у вас есть легко проверить, нужно ли вам Медиана, а затем может только рассчитать для соответствующего подмножества.
Если больше ничего не помогает, посмотрите на ASM-код, который генерирует компилятор. Вы могли бы написать код asm, который существенно быстрее (например, делая все вызовы с использованием регистров).
Редактировать: Для чего бы я ни приложил (частично) код вставки, указанный в комментарии ниже (полностью не проверено). Если numbers []
является массивом размера N
, и вы хотите, чтобы наименьшие значения P
были отсортированы в начале массива, вызовите partal_insertionsort < N, P, число с плавающей запятой> (числа);
. Следовательно, если вы позвоните partal_insertionsort <27, 13, float> (числа);
, числа [13]
будет содержать медиану. Чтобы получить дополнительную скорость, вам также придется развернуть цикл while. Как уже говорилось выше, чтобы получить очень быстро, вы должны использовать свои знания о данных (например, данные уже частично отсортированы? Знаете ли вы свойства распределения данных? Я думаю, вы получаете дрейф).
Paint.NET и Notepad ++.
Paint.NET - используйте это часто для написания или настройки графики (Visual Studio предоставляет мало возможностей для достойного редактирования графики). Paint.NET отлично подходит для создания прозрачных PNG-файлов или GIF-файлов - щелкните инструмент «Волшебная палочка», чтобы выбрать область, которую вы хотите сделать прозрачной, и нажмите «Удалить».
NotePad ++ для возможности щелкнуть правой кнопкой мыши любой файл любого размера. и просмотреть его необработанное содержимое, минуя средство просмотра по умолчанию для файла.
Один из моих любимых сценариев Perl, который я написал, отбрасывает форматирование из текста, чтобы я мог вырезать (из электронной почты или документа Word) и вставить обычный текст. текст без фоппи.
И вот оно;
# Ridiculously simple, but very useful.
use Win32::Clipboard;
my $text = Win32::Clipboard::GetText() or exit;
Win32::Clipboard($text) if $text;
Тот факт, что Transmit позволит мне редактировать в реальном времени на сервере, является абсолютной находкой.
Evernote . Главным образом, потому что это автоматическая синхронизация позволяет мне легко просматривать и изменять все мои заметки в офисе, дома или в любом другом месте, где у меня есть подключение к Интернету.
Ack : Как следует из названия домена, Ack лучше, чем grep. Умопомрачительно лучше, чем grep. Намного лучше, чем grep, что делает оригинальный grep поврежденным мозгом.
Я не смог бы жить без Ack.
Панель инструментов Firebug и веб-разработки (обе для Firefox) - ни один веб-разработчик не должен обходиться без них.
Firebug позволяет вам исследовать структуру документа и редактировать HTML / CSS на летать. Он также позволяет увидеть задействованный JavaScript.
Панель инструментов веб-разработки позволяет отключить CSS и кеш. Это позволяет вам сбросить куки.
Плагин рефакторинга для Eclipse , над которым я работаю. Надеюсь, это позволит вам легко разбить большие классы, страдающие от слишком большого количества методов / полей, на более мелкие. Теория заключается в том, что методы, использующие подобные поля, принадлежат друг другу в соответствии с принципом единой ответственности.
2-й для BeyondCompare . Недорогой, мощный и доступный для Linux.
Боковая панель Windows для этих заметок. подходит для быстрого копирования и вставки кода.