Skip to content

Commit 0f1ef90

Browse files
tf: added value by key lookup optimization using metacache pointers (average speedup of about 4x when evaluating tf scripts)
1 parent 6785b02 commit 0f1ef90

File tree

5 files changed

+313
-29
lines changed

5 files changed

+313
-29
lines changed

src/main.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,6 +1112,8 @@ main_cleanup_and_quit (void) {
11121112

11131113
conf_free ();
11141114

1115+
tf_deinit ();
1116+
11151117
trace ("messagepump_free\n");
11161118
messagepump_free ();
11171119
trace ("plug_cleanup\n");
@@ -1606,6 +1608,7 @@ main (int argc, char *argv[]) {
16061608
_touch (crash_marker);
16071609
#endif
16081610

1611+
tf_init ();
16091612
pl_init ();
16101613
conf_init ();
16111614
conf_load (); // required by some plugins at startup

src/plmeta.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,23 @@ pl_meta_for_key_with_override (playItem_t *it, const char *key) {
5454
}
5555
m = m->next;
5656
}
57-
return NULL;}
57+
return NULL;
58+
}
59+
60+
DB_metaInfo_t *
61+
pl_meta_for_cached_key (playItem_t *it, const char *key) {
62+
pl_ensure_lock ();
63+
DB_metaInfo_t *m = it->meta;
64+
65+
m = it->meta;
66+
while (m) {
67+
if (key == m->key) {
68+
return m;
69+
}
70+
m = m->next;
71+
}
72+
return NULL;
73+
}
5874

5975

6076
DB_metaInfo_t *

src/plmeta.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ pl_meta_for_key (playItem_t *it, const char *key);
7272
DB_metaInfo_t *
7373
pl_meta_for_key_with_override (playItem_t *it, const char *key);
7474

75+
DB_metaInfo_t *
76+
pl_meta_for_cached_key (playItem_t *it, const char *key);
77+
7578
int
7679
pl_get_meta_with_override (playItem_t *it, const char *key, char *val, size_t size);
7780

0 commit comments

Comments
 (0)