feat: first working version with parameters

This commit is contained in:
2024-04-15 18:46:34 +02:00
parent e29cb11b81
commit 0254bc1ae5
45 changed files with 389 additions and 351 deletions

View File

@ -2,9 +2,14 @@
import Grid from "$lib/grid";
import GraphInterface from "@nodes/graph-interface";
import { MemoryRuntimeExecutor } from "$lib/runtime-executor";
import { MemoryNodeRegistry, RemoteNodeRegistry } from "$lib/node-registry";
import { RemoteNodeRegistry } from "$lib/node-registry";
import * as templates from "$lib/graph-templates";
import type { Graph } from "@nodes/types";
import { decode, encode } from "$lib/helpers/flat_tree";
import { decodeFloat } from "$lib/helpers/encode";
globalThis.decode = decode;
globalThis.encode = encode;
const nodeRegistry = new RemoteNodeRegistry("http://localhost:3001");
const runtimeExecutor = new MemoryRuntimeExecutor(nodeRegistry);
@ -18,7 +23,12 @@
function handleResult(event: CustomEvent<Graph>) {
let a = performance.now();
res = runtimeExecutor.execute(event.detail);
let _res: any = runtimeExecutor.execute(event.detail);
if (_res instanceof Int32Array) {
res = decodeFloat(_res[0], _res[1]);
} else {
res = _res;
}
time = performance.now() - a;
console.log(res);
}
@ -29,7 +39,14 @@
</script>
<div class="wrapper">
<header>header</header>
<header>
header
<button
on:click={() => {
graph = templates.grid(10, 10);
}}>grid stress-test</button
>
</header>
<Grid.Row>
<Grid.Cell>
result: {res}
@ -62,13 +79,6 @@
grid-template-rows: 50px 1fr;
}
.details-wrapper {
position: fixed;
z-index: 100;
bottom: 10px;
right: 10px;
}
:global(html) {
background: rgb(13, 19, 32);
background: linear-gradient(

View File

@ -1,41 +1,77 @@
<script lang="ts">
import { decodeFloat, encodeFloat } from "$lib/helpers/encode";
import { decode, encode } from "$lib/helpers/flat_tree";
import { decode, encode, concat_encoded } from "$lib/helpers/flat_tree";
let maxError = 0;
new Array(10_000).fill(null).forEach((v, i) => {
const input = i < 5_000 ? i : Math.random() * 100;
const encoded = encodeFloat(input);
const output = decodeFloat(encoded[0], encoded[1]);
console.clear();
const error = Math.abs(input - output);
if (error > maxError) {
maxError = error;
{
const input_a = encode([1, 2, 3]);
const input_b = 2;
const input_c = 89;
const input_d = encode([4, 5, 6]);
const output = concat_encoded([input_a, input_b, input_c, input_d]);
const decoded = decode(output);
console.log("CONCAT", [input_a, input_b, input_c, input_d]);
console.log(output);
console.log(decoded);
}
if (false) {
let maxError = 0;
new Array(10_000).fill(null).forEach((v, i) => {
const input = i < 5_000 ? i : Math.random() * 100;
const encoded = encodeFloat(input);
const output = decodeFloat(encoded[0], encoded[1]);
const error = Math.abs(input - output);
if (error > maxError) {
maxError = error;
}
});
console.log("DECODE FLOAT");
console.log(maxError);
console.log(encodeFloat(2.0));
console.log("----");
}
if (false) {
console.log("Turning Int32Array into Array");
const test_size = 2_000_000;
const a = new Int32Array(test_size);
let t0 = performance.now();
for (let i = 0; i < test_size; i++) {
a[i] = Math.floor(Math.random() * 100);
}
});
console.log("TIME", performance.now() - t0);
t0 = performance.now();
const b = [...a.slice(0, test_size)];
console.log("TIME", performance.now() - t0);
console.log(typeof b, Array.isArray(b), b instanceof Int32Array);
}
console.log("DECODE FLOAT");
console.log(maxError);
console.log(encodeFloat(2.0));
if (false) {
// const input = [5, [6, 1], [7, 2, [5, 1]]];
// const input = [5, [], [6, []], []];
// const input = [52];
const input = [0, 0, [0, 2, 0, 128, 0, 128], 0, 128];
// const input = [5, [6, 1], [7, 2, [5, 1]]];
// const input = [5, [], [6, []], []];
// const input = [52];
const input = [0, 0, [0, 2, 0, 128, 0, 128], 0, 128];
console.log("INPUT");
console.log(input);
console.log("INPUT");
console.log(input);
let encoded = encode(input);
// encoded = [];
console.log("ENCODED");
console.log(encoded);
let encoded = encode(input);
// encoded = [];
console.log("ENCODED");
console.log(encoded);
encoded = [0, 2, 1, 0, 4, 4, 2, 4, 1, 2, 2, 0, 3, 2, 3, 1, 1, 1, 1];
encoded = [0, 2, 1, 0, 4, 4, 2, 4, 1, 2, 2, 0, 3, 2, 3, 1, 1, 1, 1];
const decoded = decode(encoded);
console.log("DECODED");
console.log(decoded);
const decoded = decode(encoded);
console.log("DECODED");
console.log(decoded);
console.log("EQUALS", JSON.stringify(input) === JSON.stringify(decoded));
console.log("EQUALS", JSON.stringify(input) === JSON.stringify(decoded));
}
</script>