Здравствуйте, smeeld, Вы писали:
C>>Ну а теперь сравни с std::sort. S>Сравнивал, обогнать не смог, но в std::sort не quick sort вовсе.
И что?
C>>Попробуй написать memcpy или memcmp более быстрые, чем в glibc. S>На какой архитектуре?
А вот в том и фича, что на любой. В glibc используются оптимизированные реализации для примерно десятка разных комбинаций.
Sapienti sat!
Re[16]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
Здравствуйте, Cyberax, Вы писали:
C>А вот в том и фича, что на любой. В glibc используются оптимизированные реализации для примерно десятка разных комбинаций.
Смотрел на спарковый ассемблер, который в C asm, и который генерит gcc, возможности и особенности
этих процессоров задействуются не полностью, прога на чистом спарковом ассемблере memcpy/memcmp порвёт в лёгкую.
Re[17]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
Здравствуйте, smeeld, Вы писали:
C>>А вот в том и фича, что на любой. В glibc используются оптимизированные реализации для примерно десятка разных комбинаций. S>Смотрел на спарковый ассемблер, который в C asm, и который генерит gcc, возможности и особенности S>этих процессоров задействуются не полностью, прога на чистом спарковом ассемблере memcpy/memcmp порвёт в лёгкую.
Ты бы ещё OS/360 посмотрел. Попробуй быстрее сделать на реальных процессорах — вариантах x86/64 и ARM.
Sapienti sat!
Re[18]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
C>Ты бы ещё OS/360 посмотрел.
Не знаю таких, а с спарками работал много и долго.
И сейчас имеется две машины.
>Попробуй быстрее сделать на реальных процессорах — вариантах x86/64 и ARM.
А чем падший не шутит, подучу AVX.
Re[14]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
Здравствуйте, Cyberax, Вы писали:
C>Попробуй написать memcpy или memcmp более быстрые, чем в glibc.
у меня в программе такой есть. не знаю каким чудом, но 32-битный gcc из простого цикла генерит код более быстрый чем бибилиотечная функция. правда, для всех остальных компиляторов этот трюк не работает
Люди, я люблю вас! Будьте бдительны!!!
Re[19]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
Здравствуйте, BulatZiganshin, Вы писали:
C>>Попробуй написать memcpy или memcmp более быстрые, чем в glibc. BZ>у меня в программе такой есть. не знаю каким чудом, но 32-битный gcc из простого цикла генерит код более быстрый чем бибилиотечная функция. правда, для всех остальных компиляторов этот трюк не работает
Ага, при каком-то совпадении звёзд оно лучше работает. Но обычно хуже, потому добавление -fno-builtin-memcpy в ключи почти всегда ускоряет работу.
Sapienti sat!
Re[20]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
Здравствуйте, smeeld, Вы писали:
BZ>>лучше агнера фога. например, на последних cpu обычный rep movs при выравненных src+dst быстрее любого simd-варианта S>rep movs работает с какими то внутренними буферами в процессоре размеров больших/равных ZMMx?
Нет, процессор может его распараллелить, выполняя копирование сразу всеми ALU.
Sapienti sat!
Re[9]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же зад
вынеси компаратор и сортировку в разные единицы трансляции, и увидишь как просядет производительность.
далее, думаю, не нужно объяснять почему qsort() медленнее?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[10]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
Здравствуйте, Cyberax, Вы писали:
BZ>>>лучше агнера фога. например, на последних cpu обычный rep movs при выравненных src+dst быстрее любого simd-варианта S>>rep movs работает с какими то внутренними буферами в процессоре размеров больших/равных ZMMx? C>Нет, процессор может его распараллелить, выполняя копирование сразу всеми ALU.
вот поэтому и надо читать фога
Люди, я люблю вас! Будьте бдительны!!!
Re[7]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же зад
A>я могу набрать и выполнить его в REPL A>а на плюсах ты сначала напечатаешь 100 строк, еще наверное cmake или bat/sh файл напишешь, потом пять раз перекомпилируешь чтобы поправить все ошибки — это конечно же проще чем питон с его REPLом
При чем тут язык? Всю обертку просто уже сделали до тебя и назвали этот пакет my_image_processing_lib люди, не имеющие отношения к написанию самого питона. Хвали их. Питон то при чем?
С таким же успехом можно какой нибудь буст в плюсах использовать без 100500 строк инициализации
Matrix has you...
Re[8]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же зад
Здравствуйте, kaa.python, Вы писали:
KP>Тем что тебе нужно написать как минимум CMakeFile,
Это за тебя делает манагер проектов или ты пишешь код через echo "my super code" >> cfile.c ?
KP>качать библиотеки и собрать my_image_processing_lib,
Качать библиотеки и собрать my_image_processing_lib, качать обертку этих библиотек для питона, если есть. Нету — писать.
KP>разложить их по соответствующим путям.
Разложить их по соответствующим путям, разложить питоновскую обёртку по своим путям
KP>Ну и еще тем, что довольно хорошо совместимых между собой библиотек в Python до чертиков, а в C++ ты еще не маленький промежуток времени будешь детские болезни лечить, со флагами сборки играться.
С флагами сборки играется манагер проекта, детские болезни есть и в питонах
Совместимость? Да-да. Питон2 — питон3.
Здравствуйте, Abyx, Вы писали:
A>1) тем что тебе надо его перекомпилировать из за "" vs ''
Надо быть идиотом, чтобы применить в плюсах "" вместо '' и наоборот. Ты уже совсем в питон угрузился, чтобы это позабыть?
A>2) в питоне для данных есть один тип — байты, а в плюсах тебе надо будет поконвертировать твой istream в какуюнить пару (void*, size_t) — одним словом больше бойлерплейта, больше возни
Строгая типизация. Возможные ошибки с типами выявляются на этапе компиляции а не когда нибудь потом, когда у юзера вместо рублей в отчете вылезет сериализованный объект
Matrix has you...
Re[7]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же зад
import my_image_processing_lib
with open('src.img', 'rb') as fl:
src = fl.read()
result = my_image_processing_lib.process()
with open('out.img', 'wb') as fl:
fl.write(result)
A>>я могу набрать и выполнить его в REPL A>>а на плюсах ты сначала напечатаешь 100 строк, еще наверное cmake или bat/sh файл напишешь, потом пять раз перекомпилируешь чтобы поправить все ошибки — это конечно же проще чем питон с его REPLом
S>При чем тут язык? Всю обертку просто уже сделали до тебя и назвали этот пакет my_image_processing_lib люди, не имеющие отношения к написанию самого питона. Хвали их. Питон то при чем? S>С таким же успехом можно какой нибудь буст в плюсах использовать без 100500 строк инициализации
писали уже, при том что вся тяжелая обработка в либе — а логика ее использования — на питоне.