The time seems really strange you could override endEdit()
with some timers to see what takes so long:
endEdit : function(silent, modifiedFieldNames){
console.time("endEdit");
var me = this,
dataSave,
changed;
silent = silent === true;
if (me.editing) {
me.editing = false;
dataSave = me.dataSave;
me.modifiedSave = me.dataSave = me.dirtySave = null;
if (!silent) {
if (!modifiedFieldNames) {
console.time("getModifiedFieldNames");
modifiedFieldNames = me.getModifiedFieldNames(dataSave);
console.timeEnd("getModifiedFieldNames");
}
changed = me.dirty || modifiedFieldNames.length > 0;
if (changed) {
console.time("afterEdit");
me.afterEdit(modifiedFieldNames);
console.timeEnd("afterEdit");
}
}
}
console.timeEnd("endEdit");
}
this will print 3 times to the console so you can see what function takes so long