perf(catalog): skipped global reference enrichment on provider-local hits
This commit is contained in:
@@ -67,11 +67,9 @@ export function createReferenceResolver<TApi extends Api>(
|
||||
? () => (lazyProviderReferences ??= providerReferenceSource())
|
||||
: () => providerReferenceSource;
|
||||
return (modelId: string) => {
|
||||
const providerRefs = getProviderReferences();
|
||||
const globalRefs = getGlobalReferences();
|
||||
const providerRef = providerRefs.get(modelId);
|
||||
const providerRef = getProviderReferences().get(modelId);
|
||||
if (providerRef) return providerRef;
|
||||
const globalRef = globalRefs.get(modelId);
|
||||
const globalRef = getGlobalReferences().get(modelId);
|
||||
return globalRef ? toModelSpec(globalRef as Model<TApi>) : undefined;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import { createReferenceResolver } from "../src/provider-models/bundled-referenc
|
||||
import type { ModelSpec } from "../src/types";
|
||||
|
||||
const FIXTURE = `${import.meta.dir}/fixtures/bundled-reference-laziness.ts`;
|
||||
const PROVIDER_HIT_FIXTURE = `${import.meta.dir}/fixtures/provider-hit-reference-laziness.ts`;
|
||||
|
||||
describe("bundled reference laziness", () => {
|
||||
test("constructing bundled model-manager options retains less than 8 MiB of RSS", () => {
|
||||
@@ -15,6 +16,20 @@ describe("bundled reference laziness", () => {
|
||||
expect(retainedRssBytes).toBeLessThan(8 * 1024 * 1024);
|
||||
});
|
||||
|
||||
test("a provider-local reference hit retains less than 8 MiB of RSS", () => {
|
||||
const result = Bun.spawnSync({
|
||||
cmd: [process.execPath, PROVIDER_HIT_FIXTURE],
|
||||
env: process.env,
|
||||
});
|
||||
expect(result.exitCode).toBe(0);
|
||||
const { resolvedId, retainedRssBytes } = JSON.parse(result.stdout.toString()) as {
|
||||
resolvedId: string | null;
|
||||
retainedRssBytes: number;
|
||||
};
|
||||
expect(resolvedId).not.toBeNull();
|
||||
expect(retainedRssBytes).toBeLessThan(8 * 1024 * 1024);
|
||||
});
|
||||
|
||||
test("a lazy provider-reference factory initializes on first resolution and only once", () => {
|
||||
const reference = {
|
||||
id: "fixture-model",
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
import { getBundledModels } from "../../src/models";
|
||||
import { createBundledReferenceMap, createReferenceResolver } from "../../src/provider-models/bundled-references";
|
||||
|
||||
const providerModels = getBundledModels("fireworks");
|
||||
const firstId = providerModels[0]?.id;
|
||||
if (!firstId) throw new Error("fireworks must have bundled models");
|
||||
|
||||
Bun.gc(true);
|
||||
const rssBefore = process.memoryUsage().rss;
|
||||
const resolveReference = createReferenceResolver(() => createBundledReferenceMap<"openai-completions">("fireworks"));
|
||||
const resolved = resolveReference(firstId);
|
||||
Bun.gc(true);
|
||||
const retainedRssBytes = process.memoryUsage().rss - rssBefore;
|
||||
|
||||
console.log(JSON.stringify({ resolvedId: resolved?.id ?? null, retainedRssBytes }));
|
||||
Reference in New Issue
Block a user