Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LLVM #26

Open
wangli1426 opened this issue May 21, 2014 · 3 comments
Open

LLVM #26

wangli1426 opened this issue May 21, 2014 · 3 comments

Comments

@wangli1426
Copy link
Contributor

Low Level Virtual Machine (LLVM) is widely used in the efficient implementation of database system, e.g., impala, hyper, etc.

Given the inefficient implementation of expression calculation in Claims, it is worthy to consider LLVM for performance improvement.

@wangli1426
Copy link
Contributor Author

I find an interesting page that introduces code generation through LLVM.
http://llvm-tutorial-cn.readthedocs.org/en/latest/chapter-3.html

@wangli1426
Copy link
Contributor Author

I have already known the basic steps to generate code by LLVM. @scdong
The next job is to make sure which codes are needed to generate and how to generate.

In the following, I will list the critical section requiring code generation.

block->insert(tuple_in_block,tuple_from_child,bytes);
const unsigned bytes=state_.schema_->getTupleActualSize(tuple_from_child);
const void* key_addr=input_schema->getColumnAddess(state_.joinIndex_left[0],cur);
bn=op->getPartitionValue(key_addr,buckets);
input_schema->copyTuple(cur,tuple_in_hashtable);
operate->equal(key_in_input,key_in_hashtable);
cur=bsti->currentTuple();
bsti->increase_cur_();
ExpressionCalculator::calcuate(toCalc,result);

@wangli1426
Copy link
Contributor Author

It is better to know better through performance test.

  1. memcpy Generated code vs non-generated code: memory copy #39
  2. filtering Generated code vs non-generated code: a case study on filtering #45

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant