From 157086e750187f6bceeea697d10bf58403c7d5de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Fri, 4 Dec 2020 14:44:57 +0100 Subject: Split RichString_(append|appendn|write) into wide and ascii RichString_writeFrom takes a top spot during performance analysis due to the calls to mbstowcs() and iswprint(). Most of the time we know in advance that we are only going to print regular ASCII characters. --- zfs/ZfsArcMeter.c | 30 +++++++++++++++--------------- zfs/ZfsCompressedArcMeter.c | 16 ++++++++-------- 2 files changed, 23 insertions(+), 23 deletions(-) (limited to 'zfs') diff --git a/zfs/ZfsArcMeter.c b/zfs/ZfsArcMeter.c index ddc239e3..91dfc713 100644 --- a/zfs/ZfsArcMeter.c +++ b/zfs/ZfsArcMeter.c @@ -51,28 +51,28 @@ static void ZfsArcMeter_display(const Object* cast, RichString* out) { if (this->values[5] > 0) { char buffer[50]; Meter_humanUnit(buffer, this->total, sizeof(buffer)); - RichString_append(out, CRT_colors[METER_VALUE], buffer); + RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer); Meter_humanUnit(buffer, this->values[5], sizeof(buffer)); - RichString_append(out, CRT_colors[METER_TEXT], " Used:"); - RichString_append(out, CRT_colors[METER_VALUE], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " Used:"); + RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer); Meter_humanUnit(buffer, this->values[0], sizeof(buffer)); - RichString_append(out, CRT_colors[METER_TEXT], " MFU:"); - RichString_append(out, CRT_colors[ZFS_MFU], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " MFU:"); + RichString_appendAscii(out, CRT_colors[ZFS_MFU], buffer); Meter_humanUnit(buffer, this->values[1], sizeof(buffer)); - RichString_append(out, CRT_colors[METER_TEXT], " MRU:"); - RichString_append(out, CRT_colors[ZFS_MRU], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " MRU:"); + RichString_appendAscii(out, CRT_colors[ZFS_MRU], buffer); Meter_humanUnit(buffer, this->values[2], sizeof(buffer)); - RichString_append(out, CRT_colors[METER_TEXT], " Anon:"); - RichString_append(out, CRT_colors[ZFS_ANON], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " Anon:"); + RichString_appendAscii(out, CRT_colors[ZFS_ANON], buffer); Meter_humanUnit(buffer, this->values[3], sizeof(buffer)); - RichString_append(out, CRT_colors[METER_TEXT], " Hdr:"); - RichString_append(out, CRT_colors[ZFS_HEADER], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " Hdr:"); + RichString_appendAscii(out, CRT_colors[ZFS_HEADER], buffer); Meter_humanUnit(buffer, this->values[4], sizeof(buffer)); - RichString_append(out, CRT_colors[METER_TEXT], " Oth:"); - RichString_append(out, CRT_colors[ZFS_OTHER], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " Oth:"); + RichString_appendAscii(out, CRT_colors[ZFS_OTHER], buffer); } else { - RichString_write(out, CRT_colors[METER_TEXT], " "); - RichString_append(out, CRT_colors[FAILED_SEARCH], "Unavailable"); + RichString_writeAscii(out, CRT_colors[METER_TEXT], " "); + RichString_appendAscii(out, CRT_colors[FAILED_SEARCH], "Unavailable"); } } diff --git a/zfs/ZfsCompressedArcMeter.c b/zfs/ZfsCompressedArcMeter.c index 224c6144..92d82e99 100644 --- a/zfs/ZfsCompressedArcMeter.c +++ b/zfs/ZfsCompressedArcMeter.c @@ -48,17 +48,17 @@ static void ZfsCompressedArcMeter_display(const Object* cast, RichString* out) { if (this->values[0] > 0) { char buffer[50]; Meter_humanUnit(buffer, this->total, sizeof(buffer)); - RichString_append(out, CRT_colors[METER_VALUE], buffer); - RichString_append(out, CRT_colors[METER_TEXT], " Uncompressed, "); + RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " Uncompressed, "); Meter_humanUnit(buffer, this->values[0], sizeof(buffer)); - RichString_append(out, CRT_colors[METER_VALUE], buffer); - RichString_append(out, CRT_colors[METER_TEXT], " Compressed, "); + RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " Compressed, "); ZfsCompressedArcMeter_printRatioString(this, buffer, sizeof(buffer)); - RichString_append(out, CRT_colors[METER_VALUE], buffer); - RichString_append(out, CRT_colors[METER_TEXT], " Ratio"); + RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer); + RichString_appendAscii(out, CRT_colors[METER_TEXT], " Ratio"); } else { - RichString_write(out, CRT_colors[METER_TEXT], " "); - RichString_append(out, CRT_colors[FAILED_SEARCH], "Compression Unavailable"); + RichString_writeAscii(out, CRT_colors[METER_TEXT], " "); + RichString_appendAscii(out, CRT_colors[FAILED_SEARCH], "Compression Unavailable"); } } -- cgit v1.2.3