|
|
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Как ускорить функцию перевода массива байт в число? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 16:53 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
20.02.2020 16:53, cptngrb пишет: > > Как ускорить функцию перевода массива байт в число? > на собеседовании шо-ле задали? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 16:57 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, нет)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 16:59 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
много раз в циклах используется, хочется побыстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:00 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
профилируй Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:02 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. Гы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:12 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrbКак ускорить функцию перевода массива байт в число? Перестать передавать arr по значению. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:23 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
rgreat, ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:25 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, это да. я упростил пример. На самом деле передается объект, одним из атрибутов которого является динамический массив ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:29 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
думал, что так быстрее будет, но возвращает другое число Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:33 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
где-то туплю сильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:34 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
не тот порядок байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:47 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
поясни задачу если массив содержит [1], [2], [3], [4], [5], [6], [7], [8], тебе на выходе надо получить 12345678? если да, то твой способ вполне себе подходящий: для UInt64 это всего восемь итераций, внутри которых только сдвиг и суммирование. Это очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:52 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Задача в 1-м посте написана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:54 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Компилируешь в 32 или 64 бита? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:56 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, в данном случае 64 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 17:59 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb Как ускорить функцию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:01 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb в данном случае 64 Жаль. 32-битный вариант можно было ускорить в ~2 раза :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:03 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:03 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Сделать case по количеству байт и прописать выражение для каждого варианта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:06 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, бред не ускоряют, его переписывают. Приведи более полные примеры с вызовом этой функции, чтобы можно было понять замысел автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:36 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Это какое-то странное CRC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:43 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
20.02.2020 18:43, rgreat пишет: > Это какое-то странное CRC. скорее странное BCD. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:45 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrbгде-то туплю сильно Практически везде. Начиная с того, что просишь диагноз по фотографии дальнего родственника больного. Тормоза не в том коде, который ты показал. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:46 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийскорее странное BCD. Вы что, предыдущие топики аффтара забыли?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:49 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Что началось то? Какашки на вентилятор? Ну не знаете и не знаете. Не хотите как хотите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:56 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, меня интересует в этом топике ровно то, что я спросил. Архитектура, подходы и "все херня, переделывай" решил в другой раз спросить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:57 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Спасибо за ответ. Тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 18:59 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Ничего и не тормозило. Ничего не зависает. Никакие ошибки не вылетают...пока) Просто хочется быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 19:01 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrbПросто хочется быстрее Тебе уже сказали: профилируй. Места, стоящий оптимизации наобум ищутся плохо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 19:06 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, ага ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 19:12 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Попробуйте вот это Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. хотя абсолютно согласен с Dimitry Sibiryakov Тормоза не в том коде, который ты показал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 19:24 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Кстати, обратил внимание, что последний параметр в XE3 записывается в r8d несмотря на NativeInt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 19:26 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ cptngrb, Попробуйте вот это Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. хотя абсолютно согласен с Dimitry Sibiryakov Тормоза не в том коде, который ты показал. А потом почему гнобят людей которые пишут на ассемблере ? Project Project1.exe raised exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 03:03 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 05:31 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Сделать каст указателя unit8 в uint64? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 05:38 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
А я тут подумал что, вроде как задача тривиальная. И по этому хочу вложить в копилку всех кто ненавидит Delphi такой вот пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Calc(abc, 5) = 395016 Что аналогично для функции автора Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 07:30 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Спасибо, всё понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 07:43 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
crutchmaster, Кстати, если подумали что нельзя задать максимальную длину массива... Очень ошибаетесь. Это регулируется так return bswap_64((*static_cast<uint64_t*>(p) << 8 * (2 + 3))); Что аналогично Writeln(to_num([1, 2, 3, 4, 5, 6, 7, 8], 2, 4)); = 197637 А так же return bswap_64((*static_cast<uint64_t*>(p) << 8 * (1 + 5))); Что аналогично Writeln(to_num([1, 2, 3, 4, 5, 6, 7, 8], 1, 2)); = 515 А так же return bswap_64((*static_cast<uint64_t*>(p) << 8 * (1 + 3))); Что аналогично Writeln(to_num([1, 2, 3, 4, 5, 6, 7, 8], 1, 4)); = 33752069 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 07:50 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Да не, я без сарказма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 07:56 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Сделать case ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 10:01 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb Как ускорить функцию перевода массива байт в число? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 10:51 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный _Vasilisk_ cptngrb, Попробуйте вот это Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. хотя абсолютно согласен спропущено... А потом почему гнобят людей которые пишут на ассемблере ? Project Project1.exe raised exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'. Код: pascal 1. и Код: pascal 1. :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 11:18 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov, Какгриться, всралась ашипка: Код: pascal 1. 2. 3. 4. В результат одним махом читаются 8 байт. И если, например, параметр "количество байт" равен 3 и индекс элемента массива указывает на третий с конца элемент, чтение выйдет за границы массива. Правда, результат будет скорректирован операцией And . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 13:45 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный А потом почему гнобят людей которые пишут на ассемблере ? Project Project1.exe raised exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 13:55 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 13:57 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov Код: pascal 1. 2. 3. 4. 5. 6. Код: pascal 1. У нас доступны только два байта. А удастся ли прочитать еще 6 - большой вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:02 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:06 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Код: pascal 1. 2. 3. 4. 5. А сохранение значения регистра RSI в регистре R9 быстрее, чем сохранение в стеке? Код: pascal 1. 2. 3. 4. 5. По объему кода сохранение в стеке точно меньше в 3 раза ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:21 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov Да я уже посыпал голову пеплом ) 22084549 Polesov Правда, результат будет скорректирован операцией And . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:22 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Polesov Да я уже посыпал голову пеплом ) 22084549 Polesov Правда, результат будет скорректирован операцией And . Я имел ввиду, что если удастся произвести чтение 8 байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:24 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov А сохранение значения регистра RSI в регистре R9 быстрее, чем сохранение в стеке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:24 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Polesov А сохранение значения регистра RSI в регистре R9 быстрее, чем сохранение в стеке? Понятно. Просто привык экономить на использовании регистров ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:26 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Polesov А сохранение значения регистра RSI в регистре R9 быстрее, чем сохранение в стеке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:55 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Квейд Если часть стека, куда делается push, лежит в кеше процессора, то затраты по времени такие же, как регистр -> регистр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 14:59 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Polesov А сохранение значения регистра RSI в регистре R9 быстрее, чем сохранение в стеке? Сделал тест: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. По результатам 3-х измерений: 1. вариант сохранения в регистре: 636401, 637557, 641079 2. вариант сохранения через стек: 586241, 583948, 584917 OP-коды сохранения через стек однобайтовые. Думаю, что время модификации регистра ESP на аппаратном уровне кране мало. Отсюда и незначительный выигрыш по времени, так как Mov регистр, регистр - OP-коды трехбайтовые. А незначительный потому, что регистр - регистр быстрее, чем регистр - память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 15:20 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Только автору нужно было вытащить определенные байты из массива, а не первые 8 Пример очень гибкий Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Только вот Я не понял, кто врёт.. C++ или Delphi потому что последние байты всегда неверные В c++ = 217871544892981507 В delphi = 217871544892981506 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Так же если мы будем 16 байт складывать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. c++ = 217871544892981511 Delphi = 217871544892981506 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 16:51 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov _Vasilisk_ пропущено... Конечно. Во-первых доступ к регистру всегда был быстрее доступа к памяти, а во вторых push, кроме собственно mov, еще и модифицирует esp Сделал тест: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. По результатам 3-х измерений: 1. вариант сохранения в регистре: 636401, 637557, 641079 2. вариант сохранения через стек: 586241, 583948, 584917 OP-коды сохранения через стек однобайтовые. Думаю, что время модификации регистра ESP на аппаратном уровне кране мало. Отсюда и незначительный выигрыш по времени, так как Mov регистр, регистр - OP-коды трехбайтовые. А незначительный потому, что регистр - регистр быстрее, чем регистр - память. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 16:56 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Только вот Я не понял, кто врёт.. C++ или Delphi потому что последние байты всегда неверные Врут все, в том числе и Я но больше компиляторы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Выдал Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Delphi выдал Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. После 216456473394479621 идут совершенно разные значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 17:17 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Квейд Хммм, чуть-чуть переделал (и собрал в 32 бита, из-за вставки) Действительно, хммм ... Переделал на твой вариант 32-х битный со вставкой и сравнил в вызовом BlahBlah: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Видно, что в 32-х битном варианте Mov EAX, ESI быстрее Push Может быть, разница обусловлена битностью приложения? Проверить 64-х битный вариант сравнения не представляется возможным из-за asm вставки. P.S. Измерял на процессоре Intel Core i7-4790 3.6 GHz ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 17:54 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
фасткодера на вас главного нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 17:58 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov Видно, что в 32-х битном варианте Mov EAX, ESI быстрее Push А вот и ответ: в 32-битном варианте OP-коды сохранения через регистр составляют 2 байта Код: powershell 1. 2. в 64-битном варианте OP-коды сохранения через регистр составляют 3 байта Код: powershell 1. 2. Сохранение через стек в обоих вариантах по одному байту. Поэтому в 64-битном варианте сохранение через стек чуть быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 18:20 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Кто нибудь знает, почему вот это Код: plaintext 1. 2. 3. Не тоже самое что Код: pascal 1. 2. 3. 4. Результатом здорового языка должен стать 506938662295044096. А Delphi компилятор с лазуром такие "Братишка, я тебе покушать принёс: 11691592161297506368" В чём магия языка то??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 21:37 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Топик все больше напоминает некую специальную олимпиаду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 21:39 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, открой процессорное окно и посмотри. что тут гадать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 22:16 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный В чём магия языка то??? Кури доки о приоритетности операторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 22:20 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey ВсеРазумный В чём магия языка то??? Кури доки о приоритетности операторов. У меня от конструкций " << 2 * 8" и " shl 2 * 8" потекли слезы умиления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 22:35 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
rgreat, Потому что ты не понимаешь логики работы, а оно работает как никак на сях всё правильно. А я кстати нашёл ошибку тем временем в примере ТС Надо с Код: pascal 1. Заменить на Код: pascal 1. Тогда он перестанет выводить каких 5. И Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 22:55 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
А я ползаю и думаю, чего у меня результаты не сходятся.. Решил покурить пример ТС и нашёл ошибку. Теперь работает как надо Хехе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 22:56 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Вот перевёл малёк, но уже оценить работу можно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 4972544674847066117 << Фикшенная функция ТС 4972544674847066117 << Моя функция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2020, 23:30 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Не нашёл времени реализовать asm для 32 бит, реализовал только для 64. И в интернете нашёл swap А так же добавил пример такого Код: pascal 1. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. Думаю понятно привёл пример, если кому то взбредёт в голову реализовать цикл для 8 байт + shl пучка Код полностью рабочий, и выдаёт те же результаты to_num : 523893758643996161 test : 523893758643996161 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 05:26 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, где ошибка то? у меня в параметрах функции передается начальный и конечные позиции, а не начало и длина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:11 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за старания и внимание. Ассемблерские вставки буду использовать только если совсем прижмет. AQTime показывает, что и так сойдет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:19 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Как где ошибка ? Ты только на начальной позиции можешь узнать элементы. А вот со второй части ты никогда не узнаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:22 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, То есть есть строка 12345678_12345678 Ты с ошибкой в коде можешь узнать только до _ черты к примеру с 5 по 8 элемент. А вот с 10 элемента по 14 ты никогда не узнаешь с ошибкой в коде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:24 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Я кстати посмотрел те функции к примеру на asm, там люди не сделали твою ошибку. В принципе как и Я не сделал в своём коде, от чего и умилялся в различие знаний ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:26 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Но самый быстрый способ это по 8 байт shl-ээлить. А не по каждому байту в отдельности в целом, компоновкой. Ибо быстрее Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:27 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, то есть to_num(ar, 1, 7) или to_num(ar, 100500, 100507) вернет ошибку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:27 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Да,вернёт ошибку. Ибо элементы будут неверно подсчитаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:28 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, не верно подсчитаны? у меня индекс К , а не i, j ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:32 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:35 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Да как же ты не понимаешь? Вот тебе пример, который наглядно демонстрирует ошибку Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Выведет в консоль Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:35 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, ять, у тебя параметры (9, 2) с чего? по моей логике должно быть (9, 10). Ты понимаешь под вторым параметром len, а я последний индекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:38 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, У нас есть массив [ 1 = 8, 2 = 5, 2 = 2, 3 = 7, 4 = 9, 5 = 2, 6 = 7, 7 = 9, 8 = 2, 9 = 5, 10 = 8, 11 = 5, 12 = 6, 13 = 7, 14 = 8, 15 = 1 ] По этому 9 и 2 это будет 5, 8, 5 что в итоге = 329733 о чём нам и говорит вызов Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:40 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, 9 и 2 быть не может, т.к. после 9 идут числа 10, 11, 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:44 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Ты знаешь что такое индексы ? arr[9] + 2 элемента. В итоге будет 3 элемента которые = 329733 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:46 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Вот тебе хороший пример как это должно работать http://www.delphibasics.ru/Move.php Точно так - же 100% Есть источник(Массив), есть начальная позиция в массиве, и есть количество байт которые мы должны подсчитать из массива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:48 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, откуда мне о индексах знать то. Блин, я ему про Фому, а он мне про Ерему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:49 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Троль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:52 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Почитай как работать с массивами, и вообще как работает память. Начальный индекс, это начала массива. Он 0. А значит конец индекса байтового массива, это максимальная длина его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:53 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Вот тебе хороший пример как это должно работать http://www.delphibasics.ru/Move.php Точно так - же 100% Есть источник(Массив), есть начальная позиция в массиве, и есть количество байт которые мы должны подсчитать из массива Я определяю кол-во байт, как начальная позиция, например [10] и конечная, например [17]. Итого 8 байт. 64 бита. UInt64. и в мою функцию если передать to_num(arr, 10, 17), то она вернет правильное значение твоя функция to_num_fix(arr, 10, 8), тоже вернет правильное значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:55 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный cptngrb, Почитай как работать с массивами, и вообще как работает память. Начальный индекс, это начала массива. Он 0. А значит конец индекса байтового массива, это максимальная длина его это трындец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:57 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb to_num(arr, 10, 17) Неверно, ты должен передать 18 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Зачем вообще передавать 18??? Если у тебя уже определена начальная позиция массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 18:58 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Ты мне лучше скажи. Ты вообще собираешься считать от позиции X больше 8 байтов ? Или нет. Это вообще всех волнует в топике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:00 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный cptngrb to_num(arr, 10, 17) Неверно, ты должен передать 18 а вот и нет ВсеРазумный Зачем вообще передавать 18??? Если у тебя уже определена начальная позиция массива. потому что могу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:01 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
это в какое такое я число смогу считать больше 8 байт? Ответ: нет, на большее я не замахнусь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:02 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb ВсеРазумный пропущено... Неверно, ты должен передать 18 а вот и нет А вот и да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:03 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb это в какое такое я число смогу считать больше 8 байт? Ответ: нет, на большее я не замахнусь) СПАСИИИБО Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Держи и пользуйся, функция которую я привёл в сообщение 22084968 Ибо пару сообщений назад меня уверяли что ты собираешься считать больше 8 байтов 22084564 А так же до этого другие люди подумали так 22084394 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:05 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, а вот и нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:06 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Короче, вот пример Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. Работает без циклов и так далее. Самая быстрая функция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:13 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:23 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
до этого индексы взял неправильные, теперь с первого элемента 8 байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:27 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Код: pascal 1. 2. 3. 4. 5. 6. Фикс функции 1409604122707721 Новая функция Convert2 1409604122707721 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:47 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Код: pascal 1. 2. 3. 4. 5. Фикс функции 360858655413176578 Новая функция Convert2 360858655413176578 Код: pascal 1. 2. 3. 4. 5. Фикс функции 360858655413176623 Новая функция Convert2 360858655413176623 ...То есть 47 это 8 элемент для 1 и 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 19:52 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
В общем учёл твои пожелания. Вот Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Код: pascal 1. 2. 3. 4. Теперь она работает точно так же как твоя функция в стоке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 20:15 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
прогоню профайлером, посмотрю насколько быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 20:42 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
cptngrb, Для 64 бита должно быть многократно быстрее, ибо Код: pascal 1. 2. 3. 4. 5. 6. Это в общем то вся функция. А вот для 32 бита надо аналогично написать, а в 32 бите я плохо ассемблер знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 20:45 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. x86 Код: plaintext 1. 2. 3. 4. x64 Код: plaintext 1. 2. 3. Гы-гы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 20:46 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
rgreat, Тест Г ибо не имеет ничего общего с измерением скорости. Когда в общий asm лист навален весь код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 20:49 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 20:55 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
rgreat, Кхм. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. Нормальный Качественный и объективный тест 64bit Test_to_num2 385577 Test_to_num 3362881 32bit Test_to_num2 2012273 Test_to_num 3879562 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 20:58 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
rgreat, Функция даже без asm быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 20:59 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Собрал все функции из топика. И моя функция настоящий лидер! Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 64 bit Test_to_numASMPolesov : 767533 Test_to_num2 : 352728 Test_to_num : 915065 32 bit Test_to_num2 : 875247 Test_to_num : 3017126 Функция _Vasilisk_ так и не захотела работать никак. По этому Я изначально и сказал что она работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 21:15 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Оказалось что Test_to_numASMPolesov вообще даже не конкурент, там совсем другие значения Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 21:29 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Ого на сколько быстрее, нашёл вывод в сек 65bit Test_to_num : 2.545933 Test_to_num2 : 0.802596 32bit Test_to_num : 11.633120 Test_to_num2 : 3.001649 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 21:49 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Оказалось что Test_to_numASMPolesov вообще даже не конкурент, там совсем другие значения Там третьей строчкой надо добавить Код: powershell 1. ВсеРазумный Код: powershell 1. Та же самая ошибка, что и у меня - возможно чтение за границами массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 22:21 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov Там третьей строчкой надо добавить Добро пожаловать в строй! Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 64bitTest_to_numASMPolesov2.201521Test_to_num3.024955Test_to_num20.899982 Быстрее, но не быстрее чем моя Polesov Та же самая ошибка, что и у меня - возможно чтение за границами массива. Если только сам автор её не сделает, ибо код равен Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 22:30 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумныйPolesovТа же самая ошибка, что и у меня - возможно чтение за границами массива.Если только сам автор её не сделаетПараметры функции, если не ошибаюсь, ссылка на массив байт, начальный и конечный индексы массива. Так? Пример: массив из 10 элементов array[0 .. 9] of byte; Индексы с 7 по 9 (3 байта) Вопрос: Код: powershell 1. откуда будет произведено чтение 8 байт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 23:16 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov, Так сам автор сказал, что он не собирается читать больше 8 байт. И у него есть определённая информация по количеству байтов, которые он может прочитать. Цитата cptngrb ВсеРазумный Зачем вообще передавать 18??? Если у тебя уже определена начальная позиция массива. потому что могу) Ограничение можно поставить, X MOD 9 но надо ли оно? Так что в ногу выстрелить, можно... Но получиться ли, если человек даёт правильные данные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 23:25 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Polesov, Так сам автор сказал, что он не собирается читать больше 8 байт. И у него есть определённая информация по количеству байтов, которые он может прочитать. Цитата cptngrb пропущено... потому что могу) Ограничение можно поставить, X MOD 9 но надо ли оно? Так что в ногу выстрелить, можно... Но получиться ли, если человек даёт правильные данные ? Э-э-э... Дело не в том, что автор "не собирается читать больше 8 байт". Дело в том, что при в приведенном мной примере надо прочитать последние 3 байта массива, а будет произведено чтение 8 байт, 5 из которых за границами массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 23:29 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov, С чего ради будет произведено чтение 8 байт? Когда будет произведено чтение 2 байт + 1 байт первого элемента, в итоге 3 байта Код: pascal 1. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... Отредактировал, убрав лишний код тестирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 23:36 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Arr - массив из 10 байт [0 .. 9] Pos - 7-й элемент массива ВсеРазумный Код: powershell 1. 2. 3. 4. Сколько всего байт будет прочитано в RAX? Откуда будут прочитаны старшие 5 байт? P.S. Ну, я уже не знаю, как объяснить ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 23:50 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov, Тогда тут тоже будет ошибка Код: pascal 1. А значит, надо просто следить за тем, какой размер массива -какая позиция, и максимальная длина массива. То есть проблема не ASM кода, а проблема глобальная. Хочу кстати подметить, что проблема решается во всех случаях, обзаведясь ещё одним аргументом - максимальной длины. А так, никак не решается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2020, 23:59 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Хочу кстати подметить, что проблема решается во всех случаях, обзаведясь ещё одним аргументом - максимальной длины. А так, никак не решается Решается. Например, побайтовым чтением элементов массива. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Но скорость будет ниже, естественно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 00:16 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov, А ещё решается выравниванием массива до X%8=0 и мы получаем прирост в 1.301539 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 00:20 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Polesov, А ещё решается выравниванием массива до X%8=0 и мы получаем прирост в 1.301539 сек Не решается. Массив из 16 байт [0 .. 15]. Начальный индекс 13, конечный индекс 15. В принципе, можно размер массива брать с запасом в 7 байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 00:26 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Эк, однако, же вас, парни, всё-таки разобралО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 00:32 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Vlad F, я сделал это не в целях правды, а в целях истины (c) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 00:33 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Фигасе, вот это да! asm функция хуже компиляторной Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 64bitTest_to_numASMPolesov - 2.202520Test_to_numBytePolesov - 6.208926Test_to_num - 2.531078Test_to_num2 - 0.900965 Ну вот если такие asm функции писать, то лучше их и вовсе не писать. А так, вырванивание массива :) И мы не теряем 5.307961 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 00:34 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Картинка не в актуале, на неё не смотреть. Не нашёл как удалить её. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 00:35 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Код: powershell 1. все дело в Shl RAX, 08h и использовании Loop Да еще и побайтное чтение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 00:42 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Polesov, Опа... Докатились.. Оптимизаторы Ассемблерные Мы с вами..... Давайте больше не трогать ассемблер В настройках проекта галочка оптимизации включена. Вставляем данный код Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 64 bitTest_to_numASMPolesov 2.276581Test_to_numBytePolesov 6.273596Test_to_num 2.559063Test_to_num2 0.910266FastConvertArrayToUint64 1.919095 32bitTest_to_num 11.720721Test_to_num2 3.017298FastConvertArrayToUint64 5.115628 То есть быстрее может и мой ASM но коль вы говорите что 1 раз 1000000000000000 может сработать av то лучший вариант FastConvertArrayToUint64 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 03:24 |
|
||
|
Ускорить функцию перевода массива байт в число
|
|||
|---|---|---|---|
|
#18+
Но я всё равно рекомендую использовать свою функцию Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Просто выделив на 8 элементов больше, и никогда их не использовать. Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 16:36 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2038559]: |
0ms |
get settings: |
9ms |
get forum list: |
28ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
355ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
136ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 787ms |

| 0 / 0 |
