Что дешевле: приведение к int или обрезка строк в C ++? - PullRequest
1 голос
/ 14 ноября 2011

Я читаю несколько файлов из linux / proc fs, и мне придется вставить эти значения в базу данных.Я должен быть максимально оптимальным.Так что дешевле:

i) затем привести к int, пока я храню его в памяти, для последующего приведения к строке снова, пока я создаю свой оператор INSERT

ii), или оставить их какстрока, просто санация значений (удаление ':', пробелов и т. д.)

iii) Что я должен принять во внимание, чтобы научиться принимать это решение?

Я уже делаюразрыв в строках, потому что порядок их поступления мне не подходит.

Спасибо,

Педро

Редактировать - Уточнение

Извините, ребята, у меня следующий сценарий: я измеряю процессор, память, сеть, диск и т. Д. Каждые 10 секунд.Мы разрабатываем нашу систему баз данных, поэтому я не могу рассчитывать на что-то большее, чем просто операторы INSERT.

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

1 Ответ

2 голосов
/ 14 ноября 2011

Похоже, вы выполняете какое-то действие по архивированию [запись один раз, чтение, скорее всего, один раз] (сохранение БД для последующего редкого / нечастого использования), если нет, то вы должны поставить акцент на оптимизации на основекак данные будут считываться (не записываться).

Если это случай архивации, возможно, вставка больших двоичных объектов (больших двоичных объектов, [или подобных концепций]) в БД будет более эффективной.

Дополнение: Видимо, это будет зависеть от того, как вы будете читать данные.Вы просто перечисляете данные для последующего просмотра, иначе будут более сложные выборочные запросы, основанные на значениях тестов.Например, если позже вы выполняете что-то вроде: SELECT * from db.Log WHERE log.time > time1 and Max (Memory) < 5000, то лучше хранить все данные в их исходном формате (целое число в виде, строка в строковом формате и т. Д.), Чтобы основная обработка данных оставалась на сервере БД.

...