Commit: 3db91def28be4480e60b46720ae7f307fcab7c7d
Author: Bastien Montagne
Date: Thu Jun 30 10:41:03 2016 +0200
Branches: asset-engine
https://developer.blender.org/rB3db91def28be4480e60b46720ae7f307fcab7c7d
Reduce re-allocation while fetching UUIDs per asset engine (asset reload area).
===================================================================
M source/blender/windowmanager/intern/wm_files_link.c
===================================================================
diff --git a/source/blender/windowmanager/intern/wm_files_link.c
b/source/blender/windowmanager/intern/wm_files_link.c
index b06fc69..7b50975 100644
--- a/source/blender/windowmanager/intern/wm_files_link.c
+++ b/source/blender/windowmanager/intern/wm_files_link.c
@@ -1066,9 +1066,10 @@ typedef struct AssetUpdateCheckEngine {
AssetEngine *ae;
/* Note: We cannot store IDs themselves in non-locking async task... so
we'll have to check again for
- * UUID/IDs mapping on each update call... Not ideal, but don't
think it will be that big of an override
+ * UUID/IDs mapping on each update call... Not ideal, but don't
think it will be that big of a bottleneck
* in practice. */
AssetUUIDList uuids;
+ int allocated_uuids;
int ae_job_id;
short status;
} AssetUpdateCheckEngine;
@@ -1170,13 +1171,16 @@ static void asset_update_engines_uuids_fetch(
id->uuid->tag = (id->tag &
LIB_TAG_MISSING) ? UUID_TAG_ASSET_MISSING : 0;
}
- /* XXX horrible, need to use some mempool,
stack or something :) */
auce->uuids.nbr_uuids++;
- if (auce->uuids.uuids) {
- auce->uuids.uuids =
MEM_reallocN_id(auce->uuids.uuids, sizeof(*auce->uuids.uuids) *
(size_t)auce->uuids.nbr_uuids, __func__);
- }
- else {
- auce->uuids.uuids =
MEM_mallocN(sizeof(*auce->uuids.uuids) * (size_t)auce->uuids.nbr_uuids,
__func__);
+ BKE_asset_uuid_print(id->uuid);
+ if (auce->uuids.nbr_uuids >
auce->allocated_uuids) {
+ auce->allocated_uuids += 16;
+ BLI_assert(auce->uuids.nbr_uuids <
auce->allocated_uuids);
+
+ const size_t allocsize =
sizeof(*auce->uuids.uuids) * (size_t)auce->allocated_uuids;
+ auce->uuids.uuids = auce->uuids.uuids ?
+
MEM_reallocN_id(auce->uuids.uuids, allocsize, __func__) :
+
MEM_mallocN(allocsize, __func__);
}
auce->uuids.uuids[auce->uuids.nbr_uuids - 1] =
*id->uuid;
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs