Я пишу небольшой агент в java, который будет играть в игру против других агентов. Я хочу сохранить небольшое количество состояний (вероятно, максимум около 1 кбайта) между прогонами программы, чтобы я мог попытаться настроить производительность агента на основе прошлых успехов. По сути, я буду читать небольшой объем данных в начале каждой игры и писать небольшую сумму в конце. Кажется, у меня есть 2 варианта, файл ввода/вывода или дерби. Есть ли преимущество в скорости? Или это не имеет большого значения для такого небольшого объема данных?Что происходит быстрее для небольшого объема информации, java-файла ввода/вывода или дерби?
ответ
Учитывая, что эти объекты могут варьироваться в зависимости от размера файла, а характеристики вашего компьютера (скорость шины, скорость HD) влияют на это, единственный способ убедиться в том, что вы должны написать свой собственный бенчмарк. Просто создайте простой цикл, подсчитайте от 1 до 1000 и снова и снова прочитайте файл внутри цикла (но не создавайте и не уничтожайте объекты внутри цикла, просто сосредоточьтесь на части чтения).
Конечно, это упражнение воняет предварительной оптимизацией, что может привести к плохой привычке кодирования. Просто напишите свой код самым читаемым, простым способом, и если есть проблема с скоростью, рефакторинг по мере необходимости.
Но поскольку это небольшой объем данных, я бы сказал, что это не имеет значения.
С 1kb данных вам лучше использовать стандартный файл ввода-вывода. Скорее всего, вы можете сериализовать все дерево объектов на диск и разобрать десериализацию при повторном запуске. Если вы хотите получить фантазию, вы можете использовать JAXB для сериализации в XML вместо двоичных файлов.
Насколько я люблю соответствовать каждой проблеме для решения базы данных, я не думаю, что здесь очень практично. Если у вас нет особых требований к конкретным возможностям базы данных, вы вводите множество проблем с накладными расходами, сложностью, обслуживанием, используя базу данных.
Единственными областями, где вы действительно можете использовать базу данных, является то, что у вас много мелких объектов/строк, и вы часто выполняете сортировки и фильтры по данным. Но даже тогда вы, вероятно, можете хранить десятки списков заказов в памяти и получать лучшую производительность с меньшими ресурсами и без головной боли в базе данных.
Если вы действительно считаете, что вам нужна база данных в этом сценарии, рассмотрите HSQL. Я не считаю это реальной базой данных, но это база данных в памяти, которая может сохраняться в файле. Низкие накладные расходы, низкая сложность и относительно небольшое количество сбоев. Кроме того, если вам нужно отредактировать сохраненные данные, вы можете сделать это с помощью текстового редактора. Не могу сказать, что о Дерби.
- 1. Что происходит быстрее? File_exist или запрос MySQL?
- 2. Что происходит быстрее, горизонтально или вертикально?
- 3. Что происходит быстрее: ldc.i4/ldstr или ldloc?
- 4. Что происходит быстрее: клонирование или использование потоков?
- 5. Что происходит быстрее, .on() или .click()?
- 6. Что происходит быстрее? Массив Struct или DataTable
- 7. Что происходит быстрее, звонки или вызов массива?
- 8. Что происходит быстрее - если ... или выберите ...?
- 9. Что происходит быстрее: include() или file_get_contents()?
- 10. Что происходит быстрее, подзапрос или отдельный (MySQL)?
- 11. Что происходит быстрее - курсор или массив?
- 12. Что происходит быстрее, XPath или Regexp?
- 13. Что происходит быстрее, протокол ssh или git?
- 14. Что происходит быстрее? Рисование или композиция?
- 15. Что происходит быстрее, кэш key_cache или OS?
- 16. Что происходит быстрее: регулярные или строковые операции?
- 17. Что происходит быстрее, GDI + или libpng?
- 18. Что происходит быстрее: '-isKindOfClass:' или '-isEqualToString:'?
- 19. Что происходит быстрее? System.currentTimeMillis() или Date(). GetTime()?
- 20. Что происходит быстрее: JavaScript или JQuery
- 21. Что происходит быстрее?
- 22. Что быстрее - сортировка или умножение небольшого массива элементов?
- 23. Что происходит быстрее и почему?
- 24. Эффективность SQL - что происходит быстрее?
- 25. Docker - множественные дубликаты деклараций объема; что происходит?
- 26. Что происходит быстрее, pipe | fifo
- 27. Что происходит быстрее для создания разметки, jquery или php?
- 28. Что быстрее или для каждого?
- 29. Что происходит быстрее, тройное дерево поиска или двоичное дерево поиска?
- 30. Что происходит быстрее: соответствующий ввод данных или соответствующая структура данных?
Да, это то, что я понял. – 2008-11-06 20:42:09