Чтение из файла против генерирования данных (по скорости) - PullRequest
2 голосов
/ 06 ноября 2010

Я пишу программу на C ++, которая должна генерировать набор точек в координатной плоскости XYZ.Набор точек варьируется в зависимости от числа х.Первый набор имеет точку (0,0,0).Второй набор имеет (0,0,0), (1,0,0), (1,1,0), (1,1,1).Третий набор содержит второй набор и добавляет точки (2,0,0), (2,1,0), (2,1,1), (2,2,0), (2,2,1), (2,2,2).

Таким образом, я могу без особых проблем сгенерировать наборы с 3 для циклов.Однако мне нужно использовать этот набор в цикле, где я даю ему ввод x, и он должен хранить набор (в структуре ADT) в соответствии с x, например.если x = 2, то набор, который он будет хранить, является вторым набором, упомянутым выше.

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

Размер набора определяется уравнением: (2x 3 + 6x 2 + 4x) / 12, так что набор, по-моему, растет очень быстро.

Мне было любопытно, будет ли быстрее генерировать этот набор, распечатать его в файли затем вместо того, чтобы каждый раз восстанавливать набор, я считываю его из файла, который я сгенерировал, и сохраняю в структуре ADT.На самом деле мне нужно запустить данные от x = 1 до x = 1000, поэтому независимо от того, что я делаю, эту часть моей программы нужно запускать 1000 раз.Или я не должен беспокоиться о таких вещах?

Примечание:

Я понял, что не предоставил достаточно информации.Этот набор точек, на самом деле, будет сохранен в двусвязном списке 1 , потому что я делаю еще один набор точек в 3-м пространстве, скажем {point1, point2, ... }.Я беру point1, и мне нужно найти минимальное расстояние point1 до каждой точки в сгенерированном наборе.После этого мне нужно удалить точку, которая была в сгенерированном множестве, которая имела минимальное расстояние с point1.Затем я перехожу к point2 и продолжаю процесс, пока я не закончу исчерпывать все точки в моем другом наборе.

Как упоминалось ранее, я буду работать на x = 1, чтобы x = 1000, это означает, что я фактически сравниваю 1001 различных наборов с набором n th , сгенерированным выше.На самом деле я не знаю, какой набор я хочу использовать из сгенерированного набора до этого, я буду знать только, какой набор мне нужно использовать во время выполнения, потому что другой набор, который я использую, может быть собран только во время выполнениявремя.Поэтому я оцениваю свой размер этого набора и получаю набор x th , который является наиболее близким по размеру, и выполняю вычисления минимального расстояния, указанные выше.


1.Мой друг упомянул, что я могу использовать массив в отличие от двусвязного списка, но причина, по которой я выбрал двусвязный список, заключается в том, что мне нужно фактически удалять точку из моего сгенерированного набора при каждом сравнении минимального расстояния (яможет закончиться пустым списком, когда я закончу сравнение на минимальном расстоянии).

...