I'm going to venture a guess and say you're doing a deep profile, which is notoriously unreliable for accurate timings. You also don't need to ask what NGUI does. You have the code -- just look at it. My guess is you are assigning the same string value to the label without checking to see if it's already assigned to that. Looking at the code it does an inequality check, but then still adjusts the collider regardless. You can probably address by moving the collider adjustments:
public string text
{
get
{
return mText;
}
set
{
if (mText == value) return;
if (string.IsNullOrEmpty(value))
{
if (!string.IsNullOrEmpty(mText))
{
mText = "";
MarkAsChanged();
ProcessAndRequest();
if (autoResizeBoxCollider) ResizeCollider();
}
}
else if (mText != value)
{
mText = value;
MarkAsChanged();
ProcessAndRequest();
if (autoResizeBoxCollider) ResizeCollider();
}
}
}
Although looking some more at your call stack I see it calling ProcessText and WrapText implying the text does, in fact, change. In which case, those few bytes are likely due to text assignment.
I advise you add a few profiler lines to NGUIText.WrapText to track it down if you're still curious -- but considering how few bytes it is, I wouldn't worry about it.