2014-10-08 3 views
0

В C++ я должен сделать некоторые пользовательские действия для каждой ячейки большой таблицы. Из-за размера таблицы я бы хотел не использовать интерпретированные инструкции, но компилировать во время выполнения функцию, которую я буду вызывать в каждой ячейке.C++ - Создать функцию во время выполнения

, определяемые пользователем действия довольно прост:

if ((state1 && state2) || state3) then change_a_value_in_memory 

Вот почему мне не нужно использовать LLVM или другие JIT библиотеки.

Я смущаюсь просто использовать mmap и напрямую добавлять код в гексагоне.

Я хотел бы знать, существуют ли лучшие решения, или, если нет, где я могу найти основной формат кода функции C++, чтобы непосредственно записать его в память.

Спасибо, и извините за мой английский:/

+0

C++ - это * обычно * ни интерпретировано, ни точно составлено. Если у вас есть, вы можете добавить, какую среду вы используете. – usr2564301

+0

Возможно, вы можете подключиться к некоторому сценарию, например, Lua –

+0

Если условия действительно такие простые, уверены ли вы, что они являются узким местом? Я ожидал бы, что такая операция будет связана с I/O. – MooseBoys

ответ

1

Это не самый изящный, но она всегда работает: создать файл с кодом C++ вашей функции, вызов компилятора с помощью system(), загрузить сгенерированный. поэтому используйте файл dlopen и используйте функцию!

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

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