Нахождение Управления на странице от базового класса страницы

Прежде всего, если вы хотите какой-либо производительности, вы должны выполнять как можно меньше работы в критической секции. Я бы начал с изменения следующего:

std::vector toDie;
std::vector toLive;

на

std::vector> toDie;
std::vector> toLive;

Затем, в своем критическом разделе, вы можете просто сделать:

toDie.push_back(std::move(myToDie));
toLive.push_back(std::move(myToLive));

Возможно вектор vector не симпатичен, но это предотвратит глубокое копирование внутри CS, что потребует ненужного времени.

[Обновить] ИМХО, нет смысла использовать многопоточность, если вы используете несмежные структуры данных, по крайней мере, не таким образом. Дело в том, что вы будете тратить большую часть своего времени на ожидание промахов кэша, потому что это то, что делают ассоциативные контейнеры, и мало выполняет реальную работу. Я не знаю, как работает эта игра. Такое ощущение, что если бы мне пришлось что-то делать с многочисленными обновлениями и рендерингом, я бы сделал обновления как можно быстрее в «главном» потоке, и у меня был бы другой (отдельный) поток для рендера. После этого вы можете просто отображать результаты визуализации после каждого «обновления» и выполнять другое обновление во время рендеринга.

Кроме того, я определенно не эксперт в хешировании, но hash()(k.x * 3 + k.y * 5) похоже на хэширование при высоких столкновениях. Конечно, вы можете попробовать что-то еще, например, то, что предлагается здесь

5
задан Ev. 8 May 2009 в 13:28
поделиться

1 ответ

Даже если то, что является и не является хорошей практикой, очень субъективно, я должен сказать, что попытка получить доступ ко всему из элемента управления из его базового класса - плохая практика. Базовый класс должен только содержать код, который относится к всем классам, которые его унаследуют, и как вы знаете, что каждая страница, которую вы напишите в будущем, будет иметь этот элемент управления?

Лучшим способом решения вашей проблемы (который, как я предполагаю, будет иметь код для вашего главного меню только в одном месте) было бы написать UserControl , который вы добавляете на каждую страницу. Если вам нужно сделать что-то конкретное с этим элементом управления, вы можете сделать это в CodeBehind UC .

3
ответ дан 15 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: