powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удобство и скорость разработки в C++
25 сообщений из 168, страница 2 из 7
Удобство и скорость разработки в C++
    #39268067
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно так же умиляют утверждения что ++iter быстрее чем iter++ )))
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268112
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbНу, когда я с графикой работал, я смотрел код, сгенерённый компилятором, и если мог, заменял сишный кода на асмовые вставки, чтобы было быстрее.
А можешь пример привести что за С++ компиллятор был и что ты заменял на асм-вставки?
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268123
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyТочно так же умиляют утверждения что ++iter быстрее чем iter++ )))компилятор теперь умеет и это оптимизировать?
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268128
andr_andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychAnatoly MoskovskyТочно так же умиляют утверждения что ++iter быстрее чем iter++ )))компилятор теперь умеет и это оптимизировать?

С++ компиляторы давно умеют.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268131
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

Всегда умел ))
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268165
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyegorych,
Всегда умел ))Скотт Майер возражал, помнится )) это же его совет писать в циклах ++iter
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268188
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВообще не имеет смысла.
Т.к. компилятор в случае шаблонов видит весь код и выносит за пределы цикла константные конструкции.
Хмм. Не верю :) Внутри цикла могли быть вызовы функций, которые меняют содержимое контейнера. Неужели компилятор будет проверять все вероятные вызовы, вплоть до того, что могут быть указатели на функции и другие нетривиальные вещи, отследить которые на уровне компиляции нереально.

maytonА можешь пример привести что за С++ компиллятор был и что ты заменял на асм-вставки?
Начиналось всё с MS VC6.0. Ну, например, я memcpy/memset заменил себе на dwdcpy/dwdset
dwdcpy
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void dwdcpy(DWORD *pdwDst, DWORD *pdwSrc, int iSize)
{
	__asm	push edi
	__asm	push esi 
	__asm	push ecx 
	{
		__asm	mov ecx, iSize
		__asm	mov esi, pdwSrc
		__asm	mov edi, pdwDst
		__asm	rep movsd
	}
	__asm	pop ecx 
	__asm	pop esi
	__asm	pop edi
}


но это, наверно, не считается, но работало быстрее.
Ну вот нашёл кусок кода заливки:
Fill
Код: 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.
			__asm
			{
				push edi
				push esi 
				push ecx 
				push eax
				push edx

				mov	edx, iAdd 

				__begin:

					mov ecx, iSize
					mov eax, cr
					mov edi, pdw
					rep stosd

				add	pdw, 	edx
				dec iH
				jnz __begin

				pop edx
				pop eax
				pop ecx 
				pop esi
				pop edi
			}


а так же у меня все приращения указателей заменены на вставки, потому как это вроде делалось через сначала копирование в регистр, там приращение, потом копирование обратно.
Всё замерял при правках, так как время было для меня критично. Были места, когда по логике должно было быстрее работать, а на деле тормозило.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268195
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я погуглил сорцы memcpy. Часть из них оперируют char. Часть - unsigned long int.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268204
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... на хабре вообще автор изучал вопрос и вернулся в лоно истинной церкви. Собственно в std::memcpy
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268238
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbХмм. Не верю :) Внутри цикла могли быть вызовы функций, которые меняют содержимое контейнера. Неужели компилятор будет проверять все вероятные вызовы, вплоть до того, что могут быть указатели на функции и другие нетривиальные вещи, отследить которые на уровне компиляции нереально.
Неужели программист, который вынес end() из цикла, это проверил сам, и потом после каждой правки проекта перепроверил
Но ответ конечно, да, в элементарных случаях, в которых вы имеет смысл выносить end() компилятор сам это делает, а в сложных случаях человеку это доверять нельзя.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268250
Фотография tehKosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Приходится много писать кода для обхода этих контейнеров и совершения различных действий. Как правило, три первые строчки >очень похожи друг на друга: первый итератор, последний итератор(в случае неизменности контейнера, чтобы его каждый раз в цикле >не вычислять, да, я зануда) и, собственно, цикл. Дальше по контексту.
В stl идеологически вернее определить функтор и применить его (или стандартный алгоритм stl) к контейнеру или его части. Тем более в сpp11 лямбды, auto и другой синтаксический сахар позволяет сделать это теперь очень кратко по объему кода, в сpp98 получалось, конечно, не очень красиво синтаксически и для одноразовой операции короче было пробежать циклом по контейнеру.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268251
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychСкотт Майер возражал, помнится )) это же его совет писать в циклах ++iter[/quote]
Во-первых этот совет был в книжке написанной в прошлом веке ))
Во-вторых, дефакто компиляторы убирают копирование в операторе ++, если его результат игнорируется.
А в С++17 они и деюре обязаны это делать.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268269
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tehKoshВ stl идеологически вернее определить функтор и применить его (или стандартный алгоритм stl) к контейнеру или его части.
Нет никакой единственно верной идеологии ))
В С++ можно делать как хочешь. Он одинаково хорошо поддерживает и функциональный и императивный подход.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268371
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

ну как-то лишка махнул с "хорошо"
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268380
Фотография tehKosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В С++ можно делать как хочешь. Он одинаково хорошо поддерживает и функциональный и императивный подход.
речь не о с++, а о stl в данном случае
stl спроектирован на основе идей generic programming
в первую очередь это конечно же относится к типам, упрощая - контейнер проектируется не под определенный тип, а под семейство типов, удовлетворяющих некоторым условия
но, второе, о чем иногда забывают, и ваши алгоритмы тоже должны быть обобщены (так же как и стандартные алгоритмы входящие в состав stl) и поэтому должны быть способны применяться к некоторому семейству контейнеров, а не к конкретному контейнеру
получается, когда вы просто перебираете элементы контейнера в цикле, вы нарушаете идеологию библиотеки
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268388
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)ну как-то лишка махнул с "хорошо"
Ну да, тут не хаскель. Но и предназначен C++ не для упоротых математикой.
tehKoshречь не о с++, а о stl в данном случае
STL это часть С++. Такой же инструмент, как и остальные части, такие как синтаксис, как совместимость с С и пр.
Если вам нужен vector как динамический массив, то вы его просто используете. Нет никакой идеологии за массивом. Хотя если вам вдруг надо для вашей задачи рассматривать массив как контейнер то флаг вам в руки. Но это не идеология, а просто другая задача, которую С++ умеет успешно решать как и первую.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268401
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВо-первых этот совет был в книжке написанной в прошлом веке ))
Во-вторых, дефакто компиляторы убирают копирование в операторе ++, если его результат игнорируется.
А в С++17 они и деюре обязаны это делать.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html понял, спасибо.
Жаль, что до С++17 мне пока как до луны ))
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268467
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я понял что мне не хватает мозгов хорошей документации по stl. Всё к этому (к stl) в итоге и должно было свестись. Сам язык в чистом виде не должен поддерживать высокоуровневые абстракции, а вот stl - как раз отличный кандидат для этого, причём с самого начала своего создания. Я сейчас немного шарился по интернету, смотрел примеры по лямбдам и увидел много использования кода из stl, про который я ничего не знаю, и который сокращает количество написанного кода. Есть мнение, что изучив stl более подробно, я ещё раз решу все свои проблемы
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268533
vitprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Производительность (в написании кода), на мой взгляд, больше зависит от используемых библиотек в случае C++ и той парадигмы программирования, в которой пишется код. Считаю, что в C++ не хватает аннотаций, как в java. На STL определенно стоит вам посмотреть глубже. Лямбды дают удобство разработки и компактность кода. Например, в случае задания критериев сортировки, лямбды очень удобны.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268541
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще добавились std::thread, std::mutex, std::lock_guard и т.д.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268684
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭтот который Платов?

https://habrahabr.ru/post/259831/


вчера прочитал с трудом все три опуса по ссылке. Это их надо было читать, или это просто ссылка на автора?

ну это не программист, это гопник какой-то...
че его слушать...
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268690
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
. Считаю, что в C++ не хватает аннотаций, как в java.


нафига нам аннотации?
во-первых, это такой способ менять язык, не меняя язык, на фиг это вообще нужно?
во-вторых, есть прагмы.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268735
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitprofСчитаю, что в C++ не хватает аннотаций, как в java.
Вы изучите полный цикл создания ПО и рантайм с аннотациями. И поймете
что C++ половина этих юзкейсов не поддерживает. Т.к. нет концепции
компонента или бина и нет ClassLoader.

А чтобы маркировать методы и аргумента чем-нибудь - достаточно комментариев.
Автодокументирование так и работает ЕМНИП.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268746
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По удобствам.

Вот же :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
struct TrackableTask
{
    task_id_t m_task_id = 0;
    task_type_t m_task_type;
    std::string m_task_status = "active";
    std::time_t m_started_at = std::time(NULL);
    std::time_t m_stopped_at = 0;
    site_id_t m_site_id = 0; // optional
    int m_crawler_config_id = 0; // optional
    // Failure statistics during execution of the task (total_try_count, acceptor_failed_count, network_problem_count)
    unsigned m_total_try_count = 0;
    unsigned m_acceptor_failed_count = 0;
    unsigned m_network_problem_count = 0;
// ...
};




Уже ж удобнее, нет разве ?
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268793
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_kА еще добавились std::thread, std::mutex, std::lock_guard и т.д.вот! А где хорошие документации на эту тему?

Нашёл на вид неплохую документацию

MasterZivвчера прочитал с трудом все три опуса по ссылке. Это их надо было читать, или это просто ссылка на автора? просто ссылка на автора и на его мысль, с которой всё началось: скорость разработки
ну это не программист, это гопник какой-то...
че его слушать...хмм, но мысль про требование от ЯП скорости (и удобства и простоты) разработки, я считаю, разумная. Всё становится очевидно, когда разрабатываешь продукт сам, тогда время становится одним из ключевых факторов, оно почти всегда против тебя(только после релиза оно на твоей стороне). И чем быстрее ты сделаешь продукт, тем лучше.

MasterZivУже ж удобнее, нет разве ? Ну, на вид вроде удобно. Но верхние два типа теперь можно через std:: описать. Про остальное судить нельзя без взгляда на реализацию и использование. Описание (иерархии) классов одних и тех же вещей может сильно меняться в зависимости от целей и перспектив развития.
...
Рейтинг: 0 / 0
25 сообщений из 168, страница 2 из 7
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удобство и скорость разработки в C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]