From 82e650b577a5c7eea32fcff32d85b3fbcdfc6f0a Mon Sep 17 00:00:00 2001 From: rodri Date: Mon, 11 Dec 2023 23:56:00 +0000 Subject: improve element insertion procedure. brought the processing time of a 38MB file from 26 minutes down to less than 20 seconds with this change. it was a very naive insertion procedure that was waiting to be pruned. --- obj.c | 11 ++++------- obj.h | 1 + 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/obj.c b/obj.c index b410e7c..f896214 100644 --- a/obj.c +++ b/obj.c @@ -87,15 +87,12 @@ addvert(OBJ *obj, OBJVertex v, int vtype) static void addelem(OBJObject *o, OBJElem *e) { - OBJElem *ep; - - if(o->child == nil){ - o->child = e; + if(o->lastone == nil){ + o->lastone = o->child = e; return; } - for(ep = o->child; ep->next != nil; ep = ep->next) - ; - ep->next = e; + o->lastone->next = e; + o->lastone = o->lastone->next; } static OBJElem * diff --git a/obj.h b/obj.h index dff7d6e..e758a78 100644 --- a/obj.h +++ b/obj.h @@ -80,6 +80,7 @@ struct OBJObject { char *name; OBJElem *child; + OBJElem *lastone; OBJObject *next; }; -- cgit v1.2.3