2012-09-24 5 views
1

쿼리가 서버에 도달 할 때 쿼리를 C++ 코드로 변환하고 공유 객체로 컴파일 한 다음 코드를 실행하는 시스템을 만들 수 있는지 살펴 봅니다.빠른 주문형 C++ 컴파일

컴파일 시간은 그만큼 가치가 있기 때문에 작아야합니다. 내 코드는 해당 C++ 코드를 생성 할 수 있지만 디스크에 쓰고 gcc를 호출하여 .so 파일을 가져온 다음 실행하면 가치가없는 것 같습니다.

공유 대상으로 빨리 컴파일 할 수있는 간단한 코드 조각을 얻을 수있는 방법이 있습니다 (쿼리가 도착하기 전에 상당한 시작 시간을 가질 수 있습니다). 그러한 도구에 허가 된 라이센스가 더있는 경우.

편집 : 보안 위협과 관련이 없도록 사용자가 사용할 수있는 매우 제한적인 쿼리 언어가 있습니다. 내 자신의 코드는 쿼리를 C++ 코드로 변환합니다. clang을 언급하는 답변은 완벽합니다. 당신이 필요로하는 속도 및 예제를 제공해야 JIT 모드에서 연타를 실행

+3

"쿼리가 서버에 도달하면 쿼리를 C++ 코드로 변환하고 공유 객체로 컴파일하고 코드를 실행합니다."- 누군가가 한 시간 이내에 서버에서 루트를 얻을 것입니다. –

+0

@ H2CO3 : 입력이 제한되면 생성 된 C++은 가능한 모든 C++ 프로그램의 유한 부분 집합입니다. 합리적인 제약으로, 정지 문제 등을 해결할 수 있습니다. – MSalters

+0

질문이 끝날 때까지 약간 짜증이났습니다. 런타임에 코드를 컴파일하고 빠르게 할 수있는 특정 도구/라이브러리를 요구했습니다. 왜 그런 토론인가! –

답변

3

Ch

또한 JIT 추가했다 ... 반면에 안전성이 뭔가 다른, here을 발견, 그로 볼 수 있습니다 인터프리터를 사용하면보다 쉽게 ​​샌드 박스/제어 환경을 제공 할 수 있습니다.

2

Necrolis 응답뿐만 아니라 특수화 된 C++ 파서 Cling도 있습니다. 편리 할거야.