2015-02-23 2 views
1

Я создаю интерактивную доску sudoku в C++. Всякий раз, когда пользователь меняет значение, я хотел бы проверить, завершена ли плата. Плата будет заполнена, когда заполнятся все пробелы на доске. Мои две идеи о том, как это сделать:Эффективность и недостаток памяти

  1. Создайте частный элемент данных, который содержит количество заполненных пробелов. Чтобы проверить, завершена ли плата, мне просто нужно проверить, равно ли это значение boardLength^2

  2. Создайте функцию-член, которая выполняет итерацию через доску и возвращает false, когда пустое пространство найдено и истинно, если оно проходит через без поиска пробелов

Это вопрос предпочтения или есть более приемлемый/правильный способ сделать это?

+2

Как правило, если вы обнаружите, что вы сравниваете код, заверяя его в цикл, который выполняет миллиард раз, когда на самом деле этот код будет выполняться * один раз за выполнение программы, вы теряете время. – meagar

ответ

9

Это вопрос предпочтения или есть более приемлемый/правильный способ сделать это?

Там является общепринятым и правильный способ оптимизации в целом:

Оптимизировать для скорости или объема памяти, когда вы на самом деле нужно, когда вы определить реальную проблему. Уникальные требования вашего проекта будут определять то, что составляет «проблему».

В противном случае оптимизируйте свой код для удобства чтения и обслуживания.

В вашем конкретном случае:

Скорее всего, независимо от того, какой алгоритм вы выбираете, проверка будет происходить так быстро, что вы не будете в состоянии измерить его, и пользователь будет никогда заметить разницу между простое решение и «быстрое» решение. Любые попытки оптимизировать это (за счет сложности или удобочитаемости или времени, потраченного на написание кода) являются плохими компромиссами.

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

Смежные вопросы