Re[16]: Дооптимизировался
От: 4UBAKA  
Дата: 24.10.10 16:35
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>а смысл? если вызовов нет, то ты сэкономишь 3 байта от силы. если есть — не сэкономишь ничего. да ещё потратишь время на выравнивание


А на ста отдельных чарах сколько?
Если есть или хотя бы может быть, то это можно определить в compile time.

Зы. А почему не надо выравнивать переменные на границу, например, параграфа?
Re: Прямое следствие российской кадровой политики
От: пыщьх http://rsdn_user.livejournal.com
Дата: 24.10.10 16:39
Оценка:
Здравствуйте, WiseAlex, Вы писали:

WA>Один парень работает в серьезной конторе. пишут что-то супер сложное для отслеживания и обработки информации в реальном времени на с++. время обработки пришедшей инфы должно быть гарантированно меньше миллисекунды.

WA>...
WA>для sprintf нужно

Пока "менеджеры" и кадровики считают, что хороший программист должен получать меньше плохого менеждера, будет так. Будут платить 50тыр в течение полугода такому товарищу за "супермегаоптимизацию" вокруг sprintf() вместо того, чтобы заплатить 150тыр за 2 недели спецу, который проблему решит сходу и еще и гарантию даст. Увы и ах.
Запретное обсуждение модерирования RSDN:
http://rsdn-user.livejournal.com/652.html
Re[15]: Дооптимизировался
От: poldhiir  
Дата: 24.10.10 16:41
Оценка:
Здравствуйте, 4UBAKA, Вы писали:

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


BZ>>да без разницы, если есть вызовы внутри этой функции


UBA>См. выше: "Будут нужны двойные слова и более — подравняемся."


UBA>А 3 двойных слова на 3 char'а — хрень.

так работают все современные компиляторы. покажите компилятор, который так не делает -- будет очень интересно на него посмотреть. а раз так делают все -- значит, в этом есть определенный смысл, который становится понятым при анализе сгенерированного компилятором кода.

вы, конечно, можете написать свой компилер, который делает эту "хрень" не делает, но сомнительно, что это будет киллер фича, а логика кодогенерации усложнится изрядно. более того, работа с char на x86 более медленная чем с int, поскольку возможности процессора по работе с 8ми битными данными очень ограничены и компилер предпочитает не заморачится, а загонять char в двойное слово, по ходу маскируя три старших байта. с беззнаковым char'ом это еще ничего. а вот как только у нас появляется знак, так кол-во "вспомогателных" команд сразу возрастает.

вывод: char следует использовать или в больших массивах (там действительно экономия будет), либо же когда нам действительно нужен char, например, при написании парсера бинарного файла, но даже тут считанный char имеет смысл присвоить переменной типа int, как, собственно, и происходит в стандартных си библиотеках. функция читает char из файла, а возвращает... int!!!
Re[8]: Дооптимизировался
От: RedUser Россия  
Дата: 24.10.10 17:39
Оценка:
P>у компилятора нет таких опций. кстати, если написать char a,b,c; то компилятор выделит три двойных слова даже если оптимизация отключена.

GCC-4.3.2 так не выравнивает, по крайней мере, по умолчанию:
$ cat chars.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a, b, c;
    printf("%p %p %p\n", &a, &b, &c);
    return EXIT_SUCCESS;
}
$ make chars
cc     chars.c   -o chars
$ ./chars
0xbfb75353 0xbfb75352 0xbfb75351
Re[16]: Дооптимизировался
От: 4UBAKA  
Дата: 24.10.10 18:17
Оценка:
Здравствуйте, poldhiir, Вы писали:

P>вы, конечно, можете написать свой компилер, который делает эту "хрень" не делает,


Уже ответил RedUser "GCC-4.3.2 так не выравнивает, по крайней мере, по умолчанию".

P>но сомнительно, что это будет киллер фича, а логика кодогенерации усложнится изрядно.


Самую малость.

P>более того, работа с char на x86 более медленная чем с int


Чем?
Re[3]: Дооптимизировался
От: Eugeny__ Украина  
Дата: 25.10.10 09:21
Оценка: +1
Здравствуйте, WiseAlex, Вы писали:

WA>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Ну-ну. Я бы для начала поинтересовался , для каких машин он пишет, что там за процессор и как выделяется память. А то мне в свое время доводилось иметь дело с машиной без аппаратного стека.


WA>извините забыл написать — windows со всеми вытекающими


Извини, но написать под Windows функцию, которая гарантированно выполняется менее миллисекунды, невозможно. Даже если функция выполняет одну операцию сложения. Потому как это не реалтайм система по определнию.

Кстати, тут в КСВ народ жаловался, что Виндовс иногда зависает в ядре на ~10мс в случайные промежутки времени. Это просто как реальный пример.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[4]: Дооптимизировался
От: kero Россия  
Дата: 25.10.10 14:28
Оценка:
Здравствуйте, Eugeny__, Вы писали:

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

WA>>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>>Ну-ну. Я бы для начала поинтересовался , для каких машин он пишет, что там за процессор и как выделяется память. А то мне в свое время доводилось иметь дело с машиной без аппаратного стека.
WA>>извините забыл написать — windows со всеми вытекающими
E__>Извини, но написать под Windows функцию, которая гарантированно выполняется менее миллисекунды, невозможно. Даже если функция выполняет одну операцию сложения. Потому как это не реалтайм система по определнию.
E__>Кстати, тут в КСВ народ жаловался, что Виндовс иногда зависает в ядре на ~10мс в случайные промежутки времени. Это просто как реальный пример.

Ну, вы прям как 2-ой PD, право. Взгляните, в каком вы форуме.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: Дооптимизировался
От: _nikita_ Чехия http://www.regarena.ru
Дата: 25.10.10 15:29
Оценка: +1
Здравствуйте, WiseAlex, Вы писали:

WA>Один парень работает в серьезной конторе. пишут что-то супер сложное для отслеживания и обработки информации в реальном времени на с++. время обработки пришедшей инфы должно быть гарантированно меньше миллисекунды.

WA>сегодня он обратился с вопросом
WA>

WA>у меня есть функция которая должна дико быстро отрабатывать, есть переменная в ней char x[250].
WA>вот где этот массив будет создаваться и где память очищается?

WA>Я объяснил где, как и что это элементарная и очень быстрая операция.
WA>Это как-то его не слишком убедило
WA>

WA>но в этой функции на счету каждая микросекунда
WA>мне нужен буффер просто
WA>...
WA>для sprintf нужно

WA>

A где смеяться то? Ну лоханулся парень, который "работает в серьезной конторе". Все с чего-то начинали...

З.Ы.: Поражает то, как "коллеги по-цеху" готовы сожрать друг друга...
Учение свет, а неучение — чуть свет и на работу.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.