Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2012, 17:23   #11
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Цитата:
На копирование елементов очереди у вас будет уходить больше времени.
Копировать элементы не буду. Вместо этого, будет копирование указателей. Вопрос лишь в трудности для меня выбора. Или выделять / освобождать память, или использовать статичный массив определенного размера) Вот меня и интересует, поиск элементов такого двумерного массива как 1024х100, не дольше, чем выделение / освобождение маленьких размеров памяти?

Цитата:
Переход по (любому) индексу - это одна команда процессора, если грубо. Быстрее некуда.
Хм, но ведь по индексу, вычисляется адрес элемента в памяти?

Последний раз редактировалось Артэс; 02.11.2012 в 17:25.
Артэс вне форума Ответить с цитированием
Старый 02.11.2012, 17:46   #12
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Копировать элементы не буду. Вместо этого, будет копирование указателей. Вопрос лишь в трудности для меня выбора. Или выделять / освобождать память, или использовать статичный массив определенного размера) Вот меня и интересует, поиск элементов такого двумерного массива как 1024х100, не дольше, чем выделение / освобождение маленьких размеров памяти?
Не дольше и размер массива не важен. Инструкции, в обобщённом (и примерном) виде при доступе к некоторому символу:
1) Адрес начала массива в регистр (если мы работаем с массивом интенсивно, он может быть уже там),
2) Старший индекс в регистр,
3) Домножить старший индекс на младший размер,
4) Прибавить младший индекс,
5) Переслать в некоторый регистр содержимое ячейки памяти, адресуемой адресом начала массива, модифицированным суммарным индексом

Всё, имеем конкретный символ конкретной строки; скорость, как можно видеть, не зависит от размера массива.
Abstraction вне форума Ответить с цитированием
Старый 02.11.2012, 22:22   #13
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Понятно. Тогда лучше выделить массив и с ним работать. В качестве экономии, размеры для сообщений можно уменьшить и до 512 байт. Длинные сообщения редки, и с ними можно работать отдельно.

Благодарю всех за ответы на мои вопросы
Артэс вне форума Ответить с цитированием
Старый 03.11.2012, 04:46   #14
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Для таких случаев есть queue(FIFO) первым пришёл первым вышел на базе односвязного списка, ну на счёт полной реализации сообщений тут нужно больше чем плоский массив байт, здесь нужны приоритеты ведь каждое сообщение имеет свой приоритет.
Nuklon вне форума Ответить с цитированием
Старый 03.11.2012, 12:56   #15
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Да в принципе никакого приоритета нет. Обычная очередь, куда помещаются сообщения, а сетевой движок, определенное раз в секунду, проверяет эту очередь и посылает из нее сообщения клиенту по порядку.
Артэс вне форума Ответить с цитированием
Старый 03.11.2012, 14:22   #16
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Кстати, еще такой вопросик. Кроме массива с сообщениями, мне еще надо хранить размер каждого сообщения. Я могу сделать так:

Код:
char msg[512][100];
int msgsize[100];
а могу сделать структуру

Код:
typedef struct
{
char str[512];
int size;
} msg_s;

msg_s msg[100];
логичнее использовать структуру, но стоит ли оно того здесь, когда всего 2 переменных? Ведь поиск элемента массива через структуру происходит дольше, наверное?

Или при поиске, что умножать на второй элемент (100) в случае char msg[512][100], или на элемент массива структуры, примерно одинаково?
Артэс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
освобождение памяти Homa_1983 Общие вопросы C/C++ 7 31.08.2013 14:36
Освобождение памяти Seran4ek Общие вопросы Delphi 7 21.12.2009 18:07
Освобождение памяти PUH Помощь студентам 1 22.11.2009 17:14
Освобождение памяти VadEr Общие вопросы Delphi 2 17.04.2009 22:23
Полиморфизм и выделение (освобождение) памяти Scogan Общие вопросы C/C++ 9 13.04.2009 07:57