Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2017, 16:08   #31
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от bugaboo Посмотреть сообщение
А на big-endian не сломается?
Нет.
Цитата:
Сообщение от waleri Посмотреть сообщение
Любителям скорости рекомендую ознакомиться с исходником стандартной функции strcpy
Увы, но в клиентском коде такие оптимизацию могут быть губительны. Разработчика библиотеки знают под какой платформой это будет работать, посему могут творить всякое. Мы, в общем случае, не можем так поступать.
Croessmah вне форума Ответить с цитированием
Старый 20.06.2017, 16:59   #32
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

....а остальным любителям вот:

https://habrahabr.ru/post/309144/

забавно, как влияет выравнивание памяти не на интелах.
...и я, чесно говоря, не совсем понимаю в чем там разница в 2 частях кода. Похоже именно в использовании библиотечной memcpy, которая заточена под проц.

...я к чему, вдруг задумался, что на ARMах предпочтительно работать с регистрами, т.о. указатели там не эффективны особо при инкрементах на 1. Вот стал гуглить...пока ничего толком не придумал, помучаю позже ардуин.

Последний раз редактировалось alexzk; 20.06.2017 в 17:02.
alexzk вне форума Ответить с цитированием
Старый 20.06.2017, 17:07   #33
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
забавно, как влияет выравнивание памяти не на интелах.
На интелах тоже влияет, только по другому - в скорости.
А фишка там чтоб скопировать невыравненную память в выравненную. Я даже удивляюсь, что изначальный код работает - когда мне довелось сталкиваться с этим вылетал exception. Явно в новых АРМах поведение другое (гораздо опаснее) так как можно не заметить проблемы.
waleri вне форума Ответить с цитированием
Старый 20.06.2017, 17:12   #34
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

...и вот еще неожиданность "Условное исполнение" на АРМ, получается, вариант с IF может оказатся даже быстрее. Т.к. на АРМ все команды могут включать в себя условие.
В вики пример есть:
https://ru.wikipedia.org/wiki/ARM_(%...83%D1%80%D0%B0)
alexzk вне форума Ответить с цитированием
Старый 20.06.2017, 17:13   #35
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
На интелах тоже влияет, только по другому - в скорости.
А фишка там чтоб скопировать невыравненную память в выравненную. Я даже удивляюсь, что изначальный код работает - когда мне довелось сталкиваться с этим вылетал exception. Явно в новых АРМах поведение другое (гораздо опаснее) так как можно не заметить проблемы.
На интелах такое со структурами везде и постоянно (и на арме), всегда ставлю __packed__(1), если нужна сериализация или подобное
alexzk вне форума Ответить с цитированием
Старый 20.06.2017, 17:16   #36
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

...кароче вывод - пользуйтесь библиотекой и не изобретайте велики. Библиотеки уже под проц оптимизированы.
alexzk вне форума Ответить с цитированием
Старый 20.06.2017, 17:34   #37
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
...и вот еще неожиданность "Условное исполнение" на АРМ, получается, вариант с IF может оказатся даже быстрее. Т.к. на АРМ все команды могут включать в себя условие.
В вики пример есть:
https://ru.wikipedia.org/wiki/ARM_(%...83%D1%80%D0%B0)
Ой, неожиданность... Давайте я вам еще неожиданностей подкину
http://x86.renejeschke.de/html/file_...x86_id_34.html
https://www.cs.tufts.edu/comp/40/rea...amd-cmovcc.pdf
p51x вне форума Ответить с цитированием
Старый 20.06.2017, 17:41   #38
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Ой, неожиданность... Давайте я вам еще неожиданностей подкину
http://x86.renejeschke.de/html/file_...x86_id_34.html
https://www.cs.tufts.edu/comp/40/rea...amd-cmovcc.pdf
Ну это ж не совсем то .. в арме вон условное вычитание и сложение регистров. Тупо i++, j--, но условное.
Но вобщем к черту, вдаватся в ассемблеры за бесплатно - вывод очевиден - юзать библиотеки компилятора, вместо великов.
alexzk вне форума Ответить с цитированием
Старый 21.06.2017, 11:26   #39
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
...и я, чесно говоря, не совсем понимаю в чем там разница в 2 частях кода.
Например, даже если не учитывать всё остальное, второй код не нарушает strict-aliasing.
Croessmah вне форума Ответить с цитированием
Старый 21.06.2017, 12:10   #40
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Например, даже если не учитывать всё остальное, второй код не нарушает strict-aliasing.
...а понял (опять долбаные термины), я так делаю:
Код:
template<class T, class Src>
T union_cast(Src src)
{
    union
    {
        Src s;
        T d;
    } tmp;
    tmp.s = src;
    return tmp.d;
}
alexzk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MMX сложить два числа gansm Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 29.10.2010 05:16
как сложить два числа с плавающей точкой forsy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 19 29.03.2010 02:15
Макрос: сложить два числа белочка Microsoft Office Excel 6 23.12.2009 22:02
Сложить два числа и вывести результат на экран We1c0m3 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 23.05.2009 11:41
Сложить два числа iwaniwan Win Api 3 23.04.2009 06:27