powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Анализ исходного кода. Разбор IOCCC 1985 august
25 сообщений из 281, страница 10 из 12
Анализ исходного кода. Разбор IOCCC 1985 august
    #38857206
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryСегодня возник вопрос. Правильно ли я понимаю, что вызов функций через объект Stream, будет медленней чем вызов функций непосредственно ?
Да, косвенная адресация занимает больше тактов процессора.
Но на практике задержка будет несущественной по сравнению например со временем доступа к файлу на диске. Да и современнные процессоры умеют оптимизировать это.

А чтобы устранить оверхед от дополнительного уровня абстракции, можно применить буферизацию.
Т.е. читать не по символу из потока, а блоками. А уже из блока читать символы простым сдвигом указателя.
Примерно так и реализуются обычно потоки.
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38857220
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но для того чтобы читать блоками, нужно знать размер файла, верно ?Чтобы не прочитать то, что я не должен прочитать. Да и вообще, в любом случае, считывание блока, будет абстракцией в том смысле, что по факту я буду считывать один блок по символам. Либо это происходит по другому ?
PS
Уже не эти ли функции тут используются fread, fwrite ?
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38857253
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свете рассуждений выше, возможно всё-таки лучше оставить код без введения интерфейса независимого от реализации. Думаю ещё вообщем
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38857255
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И при этом добавить буферизацию, например считывать по строкам(для начала). Первоначально разобравшись с тем, как это делать. Таким образом, нивелирование задержек при внедрении косвенной адресации, можно заменить на ускорение существующего алгоритма
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38857483
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury,

Вам вообще ничего не надо оптимизировать.
У вас алгоритма-то рабочего собственно пока нет :)
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38857554
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySashaMercury,

Вам вообще ничего не надо оптимизировать.
У вас алгоритма-то рабочего собственно пока нет :)

есть. Но мне он не нравится. Скоро выложу, когда доведу код до ума
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38857621
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryAnatoly MoskovskySashaMercury,

Вам вообще ничего не надо оптимизировать.
У вас алгоритма-то рабочего собственно пока нет :)

есть. Но мне он не нравится. Скоро выложу, когда доведу код до ума
Саш я предлагаю тебе и всем присутсвующим почитать

Франсуа Рабле - Гаргантюа и Пантагриэль - Глава -4 - О том, как Пантагрюэль правильно
разрешил один удивительно неясный и трудный вопрос - разрешил столь мудро, что его
решение было признано поистине чудесным
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38865117
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марк, спасибо, прочитаю обязательно. Но позже. Если научный узнает что я сейчас что-либо кроме математики читаю, то мало не покажется, да и времени очень мало.

Ребята, подскажите пожалуйста как нормально построить структуры и методы, и связи. То как это делается в виде таблиц мне не нравится. Или ткните куда почитать пожалуйста :) Это всё к этой задаче. мне постоянно всё не нравится, и я её переделываю.
PS
Знаю что долго. Всё началось с того, что изначальный алгоритм был неверный.
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38865121
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу нарисовать на большом листе, и уже закончить с ней
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38865325
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryРебята, подскажите пожалуйста как нормально построить структуры и методы, и связи. UML ? не?
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38865411
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryХочу нарисовать на большом листе, и уже закончить с ней
На самом деле рисовать можно в любом виде понятном тебе самому.
Даже будет плюс если ты разработаешь систему своих собственнх графических
обозначений. Я вот в использовани Relational Diagram нигде не могу найти
редактора который подводит "стрелочку со связью" (многие к одному)
не к сущности а к сущности+полю. Ну не могу и всё тут. А это важно.
Тк. по именам колонок не всегда понятно какая именно ключуется с foreign
key. Рисую сам поэтому.

А UML нужен в основном для презентаций или "общих" SR где в красивых и обтекаемых
формах показывают всю крутизну и продвинутость создаваемого так называемого ПО.

И "структуры", "методы" и "связи" ты можешь показать десятком способов.
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38866136
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. Спасибо за совет.

Подскажите пожалуйста, имеет ли место быть такая функция ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void add_Macro_to_MS(struct MacroSpace* ms, const struct Macro* m)
{
	ms->count += 1;
	ms->m = (struct Macro*)realloc(ms->m, ms->count*sizeof(struct Macro*));
	struct Macro* cur = &(ms->m[ms->count - 1]);
	cur = m;
}



У меня до этого добавление было сразу облако. А мне кажется это неправильно. Нужно формировать макрос, и потом добавлять макрос в пространство макросов
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38866169
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит я должен хранить массив указателей макроподстановки, а не так как я сейчас храню. Верно ?
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38866172
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так
Код: plaintext
1.
2.
3.
4.
5.
struct MacroSpace
{
	int count;
	struct Macro** m;
};
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38866183
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ещё функции

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
//конструктор пространства макроопределений
struct MacroSpace* create_MacroSpace()
{
	struct MacroSpace*	ms = (struct MacroSpace*)malloc(sizeof(struct MacroSpace));
	ms->count = 0;
	ms->m = NULL;
	ms->m = (struct Macro**)malloc(sizeof(struct Macro*));
	return ms;
}

void add_Macro_to_MS(struct MacroSpace* ms, const struct Macro* m)
{
	ms->count += 1;
	ms->m = (struct Macro**)realloc(ms->m, ms->count*sizeof(struct Macro*));
	ms->m[ms->count - 1] = m;
}



такие функции имеют место быть ? Подскажите пожалуйста. Чувствую что где-то ошибся. А вот так предполагаю использовать:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
//произвести проепроцессорную обработку кода программы на языке программирования Си
void parse_file(FILE* out, FILE* in, struct MacroSpace* ms)
{
	char* id = (char*)malloc(sizeof(char)*MAX_LENGTH_INTERNAL_IDENTIFIER);
	int t;
	while ((t = get_identifier(id, in)) != EOF)
	{
		if (t == WORD)//слово
		{
			int ind;//индекс макроподстановки
			if (!strcmp(id, KEYWORD_FOR_MACRO))//Далее определена макрозамена. Добавление макрозамены
			{
				struct Macro* m = create_Macro();
				set_Macro_from_File(m, in);//беру макрос из файла. всё ок, проверял
				add_Macro_to_MS(ms, m);
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867862
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.
Разобрался. Проблема была с выводом. Всё выше верно.

Подскажите пожалуйста по следующему вопросу. Реализовать функцию чтения идентификаторов из потока Файл очень легко. Потому что мы всегда напрямую работаем с внутренним указателем потока. Работа по извлечению идентификаторов из строки сложнее. Нужно дополнительно хранить текущий индекс внутри строки. Можно как-нибудь уйти от этой проблемы ?
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867884
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У строки нет курсоров. Придётся хранить.
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867895
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonУ строки нет курсоров. Придётся хранить.

хорошо, спасибо :)
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867917
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А на С++ можно как-либо решить эту проблему ?
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867920
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должен быть какой-то объект Reader который рассматривает строку как файл.
Правда я давно не следил за развитием STD/Boost и не знаю есть ли там такое или нет.

Как по мне - должно быть. Пускай знающие подскажут.
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867932
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryНужно дополнительно хранить текущий индекс внутри строки. Можно как-нибудь уйти от этой проблемы ?и в чём проблема? жалко памяти на один char*??
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867937
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, вы не поверите.
5 февраля выходит Игра в имитацию. Жду с нетерпением. Только сейчас узнал.
Мне пора.

PS
прошу прощение за оффтоп, не мог удержаться и не поделиться с Сообществом радостной новостью.Про Алана Тьюринга не каждый день кино снимают C:
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867947
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,
мне кажется, что каждая переменная удваивает сложность программы. Жалко читабельности
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867948
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДолжен быть какой-то объект Reader который рассматривает строку как файл.std::stringbuf?
...
Рейтинг: 0 / 0
Анализ исходного кода. Разбор IOCCC 1985 august
    #38867953
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryegorych,
мне кажется, что каждая переменная удваивает сложность программы. Жалко читабельностинаоборот, с удачным именем если, и к месту применённая, то наоборот, уменьшает сложность и повышает читабельность.
Пора тебе читать Совершенный код , чтобы не ходить по граблям, которые давно найдены, исследованы и описаны ))
...
Рейтинг: 0 / 0
25 сообщений из 281, страница 10 из 12
Форумы / C++ [игнор отключен] [закрыт для гостей] / Анализ исходного кода. Разбор IOCCC 1985 august
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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