-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Intuitively, it makes sense to inline back to front: * Suppose we are able to inline line i into line i+1. After that inline operation, we may now be able to inline line i-1 into line i+1. So we should check that next. This implies we should move backward in the program rather than moving forward. * Will we lose anything by moving backward? Well, suppose we were able to inline line i into line i+1. Could that possibly have impacted the ability to inline line i+1 into line i+2? No. Thus, it is not possible that going backwards results in more passes over the program than going forward. The only trick to implementation was that when sliding the window forward, we need to remember line i+1 in the case of a successful inline. This is anecdotal, but for the attached chained.myl example, the time to produce the logical plan was reduced for me from .58 seconds to .26.
- Loading branch information
Showing
2 changed files
with
114 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
data = empty(x:int, y:int); | ||
data1 = data; | ||
data2 = [from data, data1 emit data.*]; | ||
data4 = [from data2, data2 as data emit data.*]; | ||
data8 = [from data4, data4 as data emit data.*]; | ||
data16 = [from data8, data8 as data emit data.*]; | ||
|
||
out = [from data16 emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
out = [from out emit $0]; | ||
|
||
store(out, OUTPUT); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters