Merge pull request #266 from tidalcycles/faster-fast

fix performance bottleneck
This commit is contained in:
Felix Roos 2022-11-21 22:15:48 +01:00 committed by GitHub
commit 4cf412b93d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 1791 additions and 1805 deletions

View File

@ -74,7 +74,7 @@ const fraction = (n) => {
-> those farey sequences turn out to make pattern querying ~20 times slower! always use strings!
-> still, some optimizations could be done: .mul .div .add .sub calls still use numbers
*/
n = String(n);
// n = String(n); // this is actually faster but imprecise...
}
return Fraction(n);
};

View File

@ -800,6 +800,7 @@ export class Pattern {
* s("<bd sd> hh").fast(2) // s("[<bd sd> hh]*2")
*/
_fast(factor) {
factor = Fraction(factor);
const fastQuery = this.withQueryTime((t) => t.mul(factor));
return fastQuery.withHapTime((t) => t.div(factor));
}

File diff suppressed because it is too large Load Diff

View File

@ -807,36 +807,36 @@ exports[`runs examples > example "echo" example index 0 1`] = `
[
"0/1 -> 1/2: {\\"s\\":\\"bd\\"}",
"1/2 -> 1/1: {\\"s\\":\\"sd\\"}",
"-4166666666666667/12500000000000000 -> 8333333333333333/50000000000000000: {\\"s\\":\\"sd\\"}",
"8333333333333333/50000000000000000 -> 8333333333333333/12500000000000000: {\\"s\\":\\"bd\\"}",
"8333333333333333/12500000000000000 -> 7291666666666667/6250000000000000: {\\"s\\":\\"sd\\"}",
"-4166666666666667/25000000000000000 -> 8333333333333333/25000000000000000: {\\"s\\":\\"sd\\"}",
"8333333333333333/25000000000000000 -> 5208333333333333/6250000000000000: {\\"s\\":\\"bd\\"}",
"5208333333333333/6250000000000000 -> 8333333333333333/6250000000000000: {\\"s\\":\\"sd\\"}",
"-1/3 -> 1/6: {\\"s\\":\\"sd\\"}",
"1/6 -> 2/3: {\\"s\\":\\"bd\\"}",
"2/3 -> 7/6: {\\"s\\":\\"sd\\"}",
"-1/6 -> 1/3: {\\"s\\":\\"sd\\"}",
"1/3 -> 5/6: {\\"s\\":\\"bd\\"}",
"5/6 -> 4/3: {\\"s\\":\\"sd\\"}",
"1/1 -> 3/2: {\\"s\\":\\"bd\\"}",
"3/2 -> 2/1: {\\"s\\":\\"sd\\"}",
"8333333333333333/12500000000000000 -> 7291666666666667/6250000000000000: {\\"s\\":\\"sd\\"}",
"7291666666666667/6250000000000000 -> 5208333333333333/3125000000000000: {\\"s\\":\\"bd\\"}",
"5208333333333333/3125000000000000 -> 6770833333333333/3125000000000000: {\\"s\\":\\"sd\\"}",
"5208333333333333/6250000000000000 -> 8333333333333333/6250000000000000: {\\"s\\":\\"sd\\"}",
"8333333333333333/6250000000000000 -> 5729166666666667/3125000000000000: {\\"s\\":\\"bd\\"}",
"5729166666666667/3125000000000000 -> 7291666666666667/3125000000000000: {\\"s\\":\\"sd\\"}",
"2/3 -> 7/6: {\\"s\\":\\"sd\\"}",
"7/6 -> 5/3: {\\"s\\":\\"bd\\"}",
"5/3 -> 13/6: {\\"s\\":\\"sd\\"}",
"5/6 -> 4/3: {\\"s\\":\\"sd\\"}",
"4/3 -> 11/6: {\\"s\\":\\"bd\\"}",
"11/6 -> 7/3: {\\"s\\":\\"sd\\"}",
"2/1 -> 5/2: {\\"s\\":\\"bd\\"}",
"5/2 -> 3/1: {\\"s\\":\\"sd\\"}",
"5208333333333333/3125000000000000 -> 6770833333333333/3125000000000000: {\\"s\\":\\"sd\\"}",
"6770833333333333/3125000000000000 -> 8333333333333333/3125000000000000: {\\"s\\":\\"bd\\"}",
"8333333333333333/3125000000000000 -> 4947916666666667/1562500000000000: {\\"s\\":\\"sd\\"}",
"5729166666666667/3125000000000000 -> 7291666666666667/3125000000000000: {\\"s\\":\\"sd\\"}",
"7291666666666667/3125000000000000 -> 8854166666666667/3125000000000000: {\\"s\\":\\"bd\\"}",
"8854166666666667/3125000000000000 -> 5208333333333333/1562500000000000: {\\"s\\":\\"sd\\"}",
"5/3 -> 13/6: {\\"s\\":\\"sd\\"}",
"13/6 -> 8/3: {\\"s\\":\\"bd\\"}",
"8/3 -> 19/6: {\\"s\\":\\"sd\\"}",
"11/6 -> 7/3: {\\"s\\":\\"sd\\"}",
"7/3 -> 17/6: {\\"s\\":\\"bd\\"}",
"17/6 -> 10/3: {\\"s\\":\\"sd\\"}",
"3/1 -> 7/2: {\\"s\\":\\"bd\\"}",
"7/2 -> 4/1: {\\"s\\":\\"sd\\"}",
"8333333333333333/3125000000000000 -> 4947916666666667/1562500000000000: {\\"s\\":\\"sd\\"}",
"4947916666666667/1562500000000000 -> 5729166666666667/1562500000000000: {\\"s\\":\\"bd\\"}",
"5729166666666667/1562500000000000 -> 6510416666666667/1562500000000000: {\\"s\\":\\"sd\\"}",
"8854166666666667/3125000000000000 -> 5208333333333333/1562500000000000: {\\"s\\":\\"sd\\"}",
"5208333333333333/1562500000000000 -> 5989583333333333/1562500000000000: {\\"s\\":\\"bd\\"}",
"5989583333333333/1562500000000000 -> 6770833333333333/1562500000000000: {\\"s\\":\\"sd\\"}",
"8/3 -> 19/6: {\\"s\\":\\"sd\\"}",
"19/6 -> 11/3: {\\"s\\":\\"bd\\"}",
"11/3 -> 25/6: {\\"s\\":\\"sd\\"}",
"17/6 -> 10/3: {\\"s\\":\\"sd\\"}",
"10/3 -> 23/6: {\\"s\\":\\"bd\\"}",
"23/6 -> 13/3: {\\"s\\":\\"sd\\"}",
]
`;