Re[14]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: smeeld  
Дата: 07.03.14 19:40
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ну а теперь сравни с std::sort.

Сравнивал, обогнать не смог, но в std::sort не quick sort вовсе.


C>Попробуй написать memcpy или memcmp более быстрые, чем в glibc.

На какой архитектуре?
Re[15]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: Cyberax Марс  
Дата: 07.03.14 20:21
Оценка:
Здравствуйте, smeeld, Вы писали:

C>>Ну а теперь сравни с std::sort.

S>Сравнивал, обогнать не смог, но в std::sort не quick sort вовсе.
И что?

C>>Попробуй написать memcpy или memcmp более быстрые, чем в glibc.

S>На какой архитектуре?
А вот в том и фича, что на любой. В glibc используются оптимизированные реализации для примерно десятка разных комбинаций.
Sapienti sat!
Re[16]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: smeeld  
Дата: 07.03.14 20:41
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А вот в том и фича, что на любой. В glibc используются оптимизированные реализации для примерно десятка разных комбинаций.


Смотрел на спарковый ассемблер, который в C asm, и который генерит gcc, возможности и особенности
этих процессоров задействуются не полностью, прога на чистом спарковом ассемблере memcpy/memcmp порвёт в лёгкую.
Re[17]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: Cyberax Марс  
Дата: 07.03.14 20:50
Оценка:
Здравствуйте, smeeld, Вы писали:

C>>А вот в том и фича, что на любой. В glibc используются оптимизированные реализации для примерно десятка разных комбинаций.

S>Смотрел на спарковый ассемблер, который в C asm, и который генерит gcc, возможности и особенности
S>этих процессоров задействуются не полностью, прога на чистом спарковом ассемблере memcpy/memcmp порвёт в лёгкую.
Ты бы ещё OS/360 посмотрел. Попробуй быстрее сделать на реальных процессорах — вариантах x86/64 и ARM.
Sapienti sat!
Re[18]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: smeeld  
Дата: 07.03.14 21:11
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>Ты бы ещё OS/360 посмотрел.

Не знаю таких, а с спарками работал много и долго.
И сейчас имеется две машины.

>Попробуй быстрее сделать на реальных процессорах — вариантах x86/64 и ARM.


А чем падший не шутит, подучу AVX.
Re[14]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: BulatZiganshin  
Дата: 07.03.14 21:20
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Попробуй написать memcpy или memcmp более быстрые, чем в glibc.


у меня в программе такой есть. не знаю каким чудом, но 32-битный gcc из простого цикла генерит код более быстрый чем бибилиотечная функция. правда, для всех остальных компиляторов этот трюк не работает
Люди, я люблю вас! Будьте бдительны!!!
Re[19]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: BulatZiganshin  
Дата: 07.03.14 21:22
Оценка:
Здравствуйте, smeeld, Вы писали:

S>А чем падший не шутит, подучу AVX.


лучше агнера фога. например, на последних cpu обычный rep movs при выравненных src+dst быстрее любого simd-варианта
Люди, я люблю вас! Будьте бдительны!!!
Re[15]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: Cyberax Марс  
Дата: 07.03.14 21:30
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

C>>Попробуй написать memcpy или memcmp более быстрые, чем в glibc.

BZ>у меня в программе такой есть. не знаю каким чудом, но 32-битный gcc из простого цикла генерит код более быстрый чем бибилиотечная функция. правда, для всех остальных компиляторов этот трюк не работает
Ага, при каком-то совпадении звёзд оно лучше работает. Но обычно хуже, потому добавление -fno-builtin-memcpy в ключи почти всегда ускоряет работу.
Sapienti sat!
Re[20]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: smeeld  
Дата: 07.03.14 21:39
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:


BZ>лучше агнера фога. например, на последних cpu обычный rep movs при выравненных src+dst быстрее любого simd-варианта


rep movs работает с какими то внутренними буферами в процессоре размеров больших/равных ZMMx?
Re[21]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: Cyberax Марс  
Дата: 07.03.14 23:01
Оценка: 66 (1)
Здравствуйте, smeeld, Вы писали:

BZ>>лучше агнера фога. например, на последних cpu обычный rep movs при выравненных src+dst быстрее любого simd-варианта

S>rep movs работает с какими то внутренними буферами в процессоре размеров больших/равных ZMMx?
Нет, процессор может его распараллелить, выполняя копирование сразу всеми ALU.
Sapienti sat!
Re[9]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же зад
От: niXman Ниоткуда https://github.com/niXman
Дата: 08.03.14 01:36
Оценка:
Здравствуйте, smeeld, Вы писали:

S>как-то так


вынеси компаратор и сортировку в разные единицы трансляции, и увидишь как просядет производительность.
далее, думаю, не нужно объяснять почему qsort() медленнее?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[10]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: niXman Ниоткуда https://github.com/niXman
Дата: 08.03.14 01:42
Оценка:
qsort(), на самом деле, отлично реализован.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[22]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же за
От: BulatZiganshin  
Дата: 08.03.14 07:41
Оценка:
Здравствуйте, Cyberax, Вы писали:

BZ>>>лучше агнера фога. например, на последних cpu обычный rep movs при выравненных src+dst быстрее любого simd-варианта

S>>rep movs работает с какими то внутренними буферами в процессоре размеров больших/равных ZMMx?
C>Нет, процессор может его распараллелить, выполняя копирование сразу всеми ALU.

вот поэтому и надо читать фога
Люди, я люблю вас! Будьте бдительны!!!
Re[7]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же зад
От: Sheridan Россия  
Дата: 08.03.14 08:54
Оценка:
Здравствуйте, мыщъх, Вы писали:

Написано правильно. Но вот именно такими текстами прикрываются потом те, кто на всяких питонах пишет ВСЁ.
Matrix has you...
Re[6]: При чем тут сам питон?
От: Sheridan Россия  
Дата: 08.03.14 08:59
Оценка:
Здравствуйте, Abyx, Вы писали:

A>просто и на С, да?

A>вот простой код на питоне
A>
A>import my_image_processing_lib
A>src = open('src.img', 'rb').read()
A>result = my_image_processing_lib.process()
A>open('out.img', 'wb').write(result)
A>

A>я могу набрать и выполнить его в REPL
A>а на плюсах ты сначала напечатаешь 100 строк, еще наверное cmake или bat/sh файл напишешь, потом пять раз перекомпилируешь чтобы поправить все ошибки — это конечно же проще чем питон с его REPLом

При чем тут язык? Всю обертку просто уже сделали до тебя и назвали этот пакет my_image_processing_lib люди, не имеющие отношения к написанию самого питона. Хвали их. Питон то при чем?
С таким же успехом можно какой нибудь буст в плюсах использовать без 100500 строк инициализации
Matrix has you...
Re[8]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же зад
От: Sheridan Россия  
Дата: 08.03.14 09:06
Оценка:
Здравствуйте, 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.
Matrix has you...
Re[8]: о0
От: Sheridan Россия  
Дата: 08.03.14 09:11
Оценка:
Здравствуйте, Abyx, Вы писали:

A>1) тем что тебе надо его перекомпилировать из за "" vs ''

Надо быть идиотом, чтобы применить в плюсах "" вместо '' и наоборот. Ты уже совсем в питон угрузился, чтобы это позабыть?

A>2) в питоне для данных есть один тип — байты, а в плюсах тебе надо будет поконвертировать твой istream в какуюнить пару (void*, size_t) — одним словом больше бойлерплейта, больше возни

Строгая типизация. Возможные ошибки с типами выявляются на этапе компиляции а не когда нибудь потом, когда у юзера вместо рублей в отчете вылезет сериализованный объект
Matrix has you...
Re[7]: а какие языки кроме C/C++ вы можете посоветовать для решения таких же зад
От: Sheridan Россия  
Дата: 08.03.14 09:13
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Правильнее будет:

C>
C>import my_image_processing_lib
C>with open('src.img', 'rb') as fl:
C>    src = fl.read()
C>result = my_image_processing_lib.process()
C>with open('out.img', 'wb') as fl:
C>    fl.write(result)
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)
Matrix has you...
Re[8]: -_-
От: Sheridan Россия  
Дата: 08.03.14 09:15
Оценка:
Здравствуйте, Abyx, Вы писали:

A>всмысле если подсчета ссылок нет — файл не сразу закроется? да и пофиг, по завершении скрипта всё закроется


Я за такое отношение сажал бы за высоконагруженный С++ код до полного исправления.
Matrix has you...
Re[7]: При чем тут сам питон?
От: Abyx Россия  
Дата: 08.03.14 09:39
Оценка: :)
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, Abyx, Вы писали:


A>>просто и на С, да?

A>>вот простой код на питоне
A>>
A>>import my_image_processing_lib
A>>src = open('src.img', 'rb').read()
A>>result = my_image_processing_lib.process()
A>>open('out.img', 'wb').write(result)
A>>

A>>я могу набрать и выполнить его в REPL
A>>а на плюсах ты сначала напечатаешь 100 строк, еще наверное cmake или bat/sh файл напишешь, потом пять раз перекомпилируешь чтобы поправить все ошибки — это конечно же проще чем питон с его REPLом

S>При чем тут язык? Всю обертку просто уже сделали до тебя и назвали этот пакет my_image_processing_lib люди, не имеющие отношения к написанию самого питона. Хвали их. Питон то при чем?

S>С таким же успехом можно какой нибудь буст в плюсах использовать без 100500 строк инициализации

писали уже, при том что вся тяжелая обработка в либе — а логика ее использования — на питоне.
In Zen We Trust
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.