Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLНарод, подскажите, а у меня есть право бесплатной некоммерческой разработки в Qt Creator? Да, есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 13:32 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
MasterZivAlekseySQLНарод, подскажите, а у меня есть право бесплатной некоммерческой разработки в Qt Creator? Да, есть. Краткость- сестра таланта! :) Как мне тогда активировать среду, чтобы не появлялось окно при ее старте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 13:57 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Подозреваю, тебе нужно просто установить некоммерческую версию QT Creator. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 14:14 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLНарод, подскажите, а у меня есть право бесплатной некоммерческой разработки в Qt Creator? Каждый раз когда захожу среда отсчитывает мне evaluation- период и по кнопке "Activation", перебрасывает на страницу покупки продукта (без возможности указать о некоммерческом использовании продукта). Download Qt Open Source ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 21:11 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
CEMbCommon LispКлассный совет, CEMb, продолжайте "помогать"!каюсь, виноват. Все иногда ошибаются. Ага. Только почему-то у некоторых это случается слишком часто. CEMbвектор плох тем, что внутри указатели Поэтому я бы для себя выбрал shared_ptr Вектор плох, потому что внутри указатели, а в shared_ptr никаких указателей нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 21:57 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Dima TДля больших скоростей указатели есть Код: plaintext 1. быстрее некуда, только за пределы массива не залезь случайно.В чём тут профит? Оптимизатор и так обращения к вектору по индексу заинлайнит до эквивалентного состояния. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 22:01 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
CEMbDima TПутаешь, внутри вектора обычный массив. std::vector это просто обертка, которая сама память выделяет и следит чтобы за пределы не выходили.ага, но чтобы до неё (до памяти) добраться, нужно использовать итераторыНужно использовать http://en.cppreference.com/w/cpp/container/vector/data CEMbкоторые по сути указатели. Когда ты обращаешься через итератор - зовётся метод вектораЕсли это "по сути указатели", зачем звать метод? Лол. Не знаю, где итераторы зовут методы, в GNU libstdc++ (в llvm-овской libcxx скорее всего так же, лень проверять) итератор для вектора — это тупо обёртка над указателем. Этот указатель инициализируется значением указателя на данные внутри вектора. И дальше всякие операторы разыменования * или -> или инкрементов/сложений работают напрямую с этим указатем. После инлайнинга никакого отличия от работы с голым указателем не остаётся. Причина использования не голого указателя в качестве итератора, а класса-обёртки над ним, я думаю, историческая. Вполне можно голый указатель возвращать на данные. Для std::array, например, итератор — это голый указатель (в GNU-библиотеке). CEMbНа счёт того, что там внутри вектора, как оно там лежит в памяти, в общем случае неизвестно/может поменяться в следующих редакциях и так далее, лучше туда напрямую не лезть.В общем случае — неизвестно, а в случае C++11 и старше — известно: данные лежат последовательно в одном куске памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 22:13 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Dima TС итератором быстрее, скорость как с массивом. is_sort() проверяет отсортирован ли массив. Тестил недавно. Результат на 10 млн. элементов ФункцияВремяis_sort41 msis_sort236 msis_sort336 msis_sort439 ms is_sort4 по сути тоже самое что и is_sort3, но почему-то медленнее. Наверно оптимизатор плохо понял такую конструкцию. Можно код для тестирования? Какой компилятор использовался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 22:56 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Common LispВ общем случае — неизвестно, а в случае C++11 и старше — известно: данные лежат последовательно в одном куске памяти. До C++11 - тоже. Это изначально подразумевалось, просто в стандарте 98 забыли упомянуть об этом. А редакции 2003 уже явно указано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 22:59 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Common LispПричина использования не голого указателя в качестве итератора, а класса-обёртки над ним, я думаю, историческая. Необязательно. Например всякие trait'ы, определяющие категорию итератора, удобнее с кастомными классами делать, чем со встроенными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 23:03 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyCommon LispПричина использования не голого указателя в качестве итератора, а класса-обёртки над ним, я думаю, историческая. Необязательно. Например всякие trait'ы, определяющие категорию итератора, удобнее с кастомными классами делать, чем со встроенными. Итератор в вектор должен быть random access iterator. Обычный указатель вполне удовлетворяет требованиям к random access-итератору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 23:21 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Dima TС итератором быстрее, скорость как с массивом. добавил тест с указателем на char Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. } результаты 1> 172 2> 125 3> 109 4> 140 5> 0 под дебагом: 1> 8611 2> 5663 3> 62307 - интересно... 4> 4508 5> 47 т.е. получается, что все работы с stl на порядки медленнее Common LispCEMbкаюсь, виноват. Все иногда ошибаются. Ага. Только почему-то у некоторых это случается слишком часто.если есть ко мне конкретные претензии, давайте обсудим. Если от меня вред, я перестану отвечать на вопросы, не вопрос и без обид :)Common LispCEMbПоэтому я бы для себя выбрал shared_ptr Вектор плох, потому что внутри указатели, а в shared_ptr никаких указателей нет?у меня там было больше текста во фразе, который раскрывал смысл и способ использования shared_ptr, и почему это лучше указателя/итератора, а так же я сказал "для себя бы", т.е. никому не советую, потому что метод небезопасный.Common LispЕсли это "по сути указатели", зачем звать метод? Лол.В классе итератора оператор -> перехвачен (ms с++11), поэтому, когда мы обращаемся к элементу вектора it->f(), компилятор вставляет вызов метода, т.е. этот вопрос - к микрософтовскому компилятору.Common LispПосле инлайнинга никакого отличия от работы с голым указателем не остаётся.релиз не смотрел, может там всё лучше. Common LispНужно использовать http://en.cppreference.com/w/cpp/container/vector/data спасибо, про data не знал, ну и да, получается, это гарантирует, что с с++11 данные лежат одним куском. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 07:05 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
CEMbDima TС итератором быстрее, скорость как с массивом. добавил тест с указателем на char ... Некорректная добавка, поэтому выводы неправильные. У меня проверка что массив строк отсортирован, а ты массив символов проверяешь. Тест изначально был совсем про другое, я тестил скорость сортировки сортированного массива строк в сравнении с проверкой что массив сортирован. Тест был готовый, поэтому туда же добавил, чтобы что-то новое не изобретать. Полный код теста Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 08:04 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Common LispМожно код для тестирования? Какой компилятор использовался? Код выше. Компилятор MSVC2015 Тест не очень корректный. Как написал выше изначально тестил другое. Тут погрешности таймера большую погрешность вносят. По хорошему надо чтобы общее время было порядка секунды и более. Для себя давно вывод сделал что вектор и обычный массив примерно одинаковы по скорости, поэтому пользуюсь вектором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 08:14 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Dima TНекорректная добавка, поэтому выводы неправильные. У меня проверка что массив строк отсортирован, а ты массив символов проверяешь.Ну я просто хотел посмотреть по скоростям. Да, странно, что на итераторах скорости ниже. Смотрел релизную сборку под дебагом, ничё не понял Оптимизатор лютует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 09:20 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Dima TКомпилятор MSVC2015Так я и подумал. Вот, https://godbolt.org/g/wsyjrT , GCC выдаёт для цикла функций 3 и 4 эквивалентный с точностью до переименования регистров код. clang тоже выдаёт почти одинаковый код. Думаю, делать бенчмарк смысла нет, видно, что время должно быть одинаковым. CEMbОптимизатор лютует.Оптимизатор MSVC не может лютовать, т.к. его не существует, ха-ха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 10:49 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Common LispОптимизатор MSVC не может лютовать, т.к. его не существует, ха-ха. школота ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 10:52 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Common LispОптимизатор MSVC не может лютовать, т.к. его не существует, ха-ха.ну, для начала он воткнул все функции в код, хотя его не просили явно. Так что он всё ж таки есть. Дальше я попытался бегло понять, как/что/какие данные он обрабатывает, но сразу ниасилил (я избалованный, обычно дебажные сборки смотрю, поэтому непривычно), ну и на строчке: Код: asm 1. 2. 3. они меня потеряли (да, там скорее всего где-то джмп, но уже лень стало такую магию расплетать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 11:08 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
CEMb, оптимизер воркс файн(с) На самом деле, в некоторых случаях, шаблонный код быстрее классического, т.к. по факту получается полный инлайн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 11:44 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
MasterZivПодозреваю, тебе нужно просто установить некоммерческую версию QT Creator. Да, спасибо, так и оказалось. А как посмотреть реализацию библиотеки С? Например, есть библиотечная функция strlen. Как ее реализацию можно посмотреть? Вопрос волнует, потому что книги не актуальны и часто упрощенные. Возможно библиотека представляет больше возможностей (количество функций и количество их параметров). Думаю самое актуальное можно найти только в самой библиотеке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 12:31 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLА как посмотреть реализацию библиотеки С? Например, есть библиотечная функция strlen. Как ее реализацию можно посмотреть? http://sourceware.org/git/?p=glibc.git;a=blob;f=string/strlen.c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 12:38 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Common LispAlekseySQLА как посмотреть реализацию библиотеки С? Например, есть библиотечная функция strlen. Как ее реализацию можно посмотреть? http://sourceware.org/git/?p=glibc.git;a=blob;f=string/strlen.c А с описанием функций есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 12:59 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
Common LispAlekseySQLА как посмотреть реализацию библиотеки С? Например, есть библиотечная функция strlen. Как ее реализацию можно посмотреть? http://sourceware.org/git/?p=glibc.git;a=blob;f=string/strlen.c Честно говоря, хочется из среды разработки все смотреть. Так можно быть уверенным, что не будет рассогласования между моей версией библиотеки и той, что в интернете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 13:02 |
|
||
|
На чем писать: С / С++ / Qt ?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLCommon Lispпропущено... http://sourceware.org/git/?p=glibc.git;a=blob;f=string/strlen.c Честно говоря, хочется из среды разработки все смотреть. Так можно быть уверенным, что не будет рассогласования между моей версией библиотеки и той, что в интернете. Как бы стандартная библиотека одна на всех, везде одинаковая, в этом и есть её прелесть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 13:18 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39394421&tid=2018301]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
203ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 323ms |

| 0 / 0 |
