Перевести таблицу Lua на C ++ - PullRequest
0 голосов
/ 21 марта 2019

У меня есть таблица Lua, подобная этой:

t_big={
{open,high,low,close, sd, far_sd},
{open,high,low,close, sd, far_sd},
{open,high,low,close, sd, far_sd},
{open,high,low,close, sd, far_sd},
}--many lines like these. Open, high, low, close, sd, far_sd are different numbers.

Я перевожу этот код на C ++.Помогите мне найти похожий контейнер (словарь).Он должен поддерживать ОЧЕНЬ высокую скорость, потому что я буду изучать эти данные, используя грубую силу.Скрипт Lua делает свою работу за 1 неделю.Я изучаю C ++, чтобы сделать эту работу быстрее.Круг грубой силы Lua выглядит так:

for sd=start_sd,end_sd,1 do 
 for far_sd=start_far_sd,end_far_sd,0.25 do 
 ..... work with container, check sd and far_sd parameters. Seeking best result.
 end 
end

1 Ответ

1 голос
/ 23 марта 2019

На самом деле не совсем понятно, о чем вы спрашиваете. Из имеющейся информации у меня появилось несколько идей:

  1. Классические массивы или std::array. Общим является то, что их размер определяется во время компиляции (исходные файлы), что может быть плохой идеей в целом. Сохраните свои записи как struct для упрощения именования полей.
  2. std::vector. Так же, как и предыдущий, но он имеет размер во время выполнения. Сохранять записи таким же образом.
  3. Из вашего примера "грубой силы" довольно ясно, что вы делаете это неправильно. Посмотрите на любую базу данных SQL: SQLite, вероятно, лучший выбор на данный момент. Это потребует некоторого изучения, но в целом должно быть довольно легко. Если ваша таблица жестко закодирована (я уверен, что это не так, но кто знает), вы можете найти привязки SQLite для lua и легко экспортировать ее. Если это не так, вы всегда можете создать базу данных в памяти, которая является сверхбыстрой (не забывайте об индексировании таблицы в любом случае!). Чтобы упростить задачу, вы, вероятно, захотите использовать некоторую оболочку для SQLite, например https://github.com/SqliteModernCpp/sqlite_modern_cpp.

Если сам язык не важен (вы пришли на C ++ только для скорости), рассмотрите возможность использования привязок SQLite для lua, это должно быть проще для вас и все же намного быстрее, чем таблица брутфорсинга, как вы делаете сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...