mirror of
https://github.com/xzeldon/htop.git
synced 2025-07-14 13:04:35 +03:00
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.
This commit is contained in:

committed by
BenBE

parent
5506925b34
commit
157086e750
@ -536,7 +536,7 @@ static void LinuxProcess_writeCommand(const Process* this, int attr, int baseAtt
|
||||
if(lp->procExeDeleted)
|
||||
baseAttr = CRT_colors[FAILED_READ];
|
||||
|
||||
RichString_append(str, attr, lp->mergedCommand.str);
|
||||
RichString_appendWide(str, attr, lp->mergedCommand.str);
|
||||
|
||||
if (lp->mergedCommand.commEnd) {
|
||||
if (!lp->mergedCommand.separateComm && commStart == baseStart && highlightBaseName) {
|
||||
@ -608,7 +608,7 @@ static void LinuxProcess_writeCommandField(const Process *this, RichString *str,
|
||||
n -= (buf - buffer);
|
||||
const char* draw = CRT_treeStr[lastItem ? (this->settings->direction == 1 ? TREE_STR_BEND : TREE_STR_TEND) : TREE_STR_RTEE];
|
||||
xSnprintf(buf, n, "%s%s ", draw, this->showChildren ? CRT_treeStr[TREE_STR_SHUT] : CRT_treeStr[TREE_STR_OPEN] );
|
||||
RichString_append(str, CRT_colors[PROCESS_TREE], buffer);
|
||||
RichString_appendWide(str, CRT_colors[PROCESS_TREE], buffer);
|
||||
LinuxProcess_writeCommand(this, attr, baseattr, str);
|
||||
}
|
||||
}
|
||||
@ -757,7 +757,7 @@ static void LinuxProcess_writeField(const Process* this, RichString* str, Proces
|
||||
Process_writeField(this, str, field);
|
||||
return;
|
||||
}
|
||||
RichString_append(str, attr, buffer);
|
||||
RichString_appendWide(str, attr, buffer);
|
||||
}
|
||||
|
||||
static long LinuxProcess_compare(const void* v1, const void* v2) {
|
||||
|
@ -50,11 +50,11 @@ static void PressureStallMeter_display(const Object* cast, RichString* out) {
|
||||
const Meter* this = (const Meter*)cast;
|
||||
char buffer[20];
|
||||
xSnprintf(buffer, sizeof(buffer), "%.2lf%% ", this->values[0]);
|
||||
RichString_write(out, CRT_colors[PRESSURE_STALL_TEN], buffer);
|
||||
RichString_writeAscii(out, CRT_colors[PRESSURE_STALL_TEN], buffer);
|
||||
xSnprintf(buffer, sizeof(buffer), "%.2lf%% ", this->values[1]);
|
||||
RichString_append(out, CRT_colors[PRESSURE_STALL_SIXTY], buffer);
|
||||
RichString_appendAscii(out, CRT_colors[PRESSURE_STALL_SIXTY], buffer);
|
||||
xSnprintf(buffer, sizeof(buffer), "%.2lf%% ", this->values[2]);
|
||||
RichString_append(out, CRT_colors[PRESSURE_STALL_THREEHUNDRED], buffer);
|
||||
RichString_appendAscii(out, CRT_colors[PRESSURE_STALL_THREEHUNDRED], buffer);
|
||||
}
|
||||
|
||||
const MeterClass PressureStallCPUSomeMeter_class = {
|
||||
|
@ -267,9 +267,9 @@ static void SystemdMeter_display(ATTR_UNUSED const Object* cast, RichString* out
|
||||
char buffer[16];
|
||||
|
||||
int color = (systemState && 0 == strcmp(systemState, "running")) ? METER_VALUE_OK : METER_VALUE_ERROR;
|
||||
RichString_write(out, CRT_colors[color], systemState ? systemState : "???");
|
||||
RichString_writeAscii(out, CRT_colors[color], systemState ? systemState : "N/A");
|
||||
|
||||
RichString_append(out, CRT_colors[METER_TEXT], " (");
|
||||
RichString_appendAscii(out, CRT_colors[METER_TEXT], " (");
|
||||
|
||||
if (nFailedUnits == INVALID_VALUE) {
|
||||
buffer[0] = '?';
|
||||
@ -277,9 +277,9 @@ static void SystemdMeter_display(ATTR_UNUSED const Object* cast, RichString* out
|
||||
} else {
|
||||
xSnprintf(buffer, sizeof(buffer), "%u", nFailedUnits);
|
||||
}
|
||||
RichString_append(out, zeroDigitColor(nFailedUnits), buffer);
|
||||
RichString_appendAscii(out, zeroDigitColor(nFailedUnits), buffer);
|
||||
|
||||
RichString_append(out, CRT_colors[METER_TEXT], "/");
|
||||
RichString_appendAscii(out, CRT_colors[METER_TEXT], "/");
|
||||
|
||||
if (nNames == INVALID_VALUE) {
|
||||
buffer[0] = '?';
|
||||
@ -287,9 +287,9 @@ static void SystemdMeter_display(ATTR_UNUSED const Object* cast, RichString* out
|
||||
} else {
|
||||
xSnprintf(buffer, sizeof(buffer), "%u", nNames);
|
||||
}
|
||||
RichString_append(out, valueDigitColor(nNames), buffer);
|
||||
RichString_appendAscii(out, valueDigitColor(nNames), buffer);
|
||||
|
||||
RichString_append(out, CRT_colors[METER_TEXT], " failed) (");
|
||||
RichString_appendAscii(out, CRT_colors[METER_TEXT], " failed) (");
|
||||
|
||||
if (nJobs == INVALID_VALUE) {
|
||||
buffer[0] = '?';
|
||||
@ -297,9 +297,9 @@ static void SystemdMeter_display(ATTR_UNUSED const Object* cast, RichString* out
|
||||
} else {
|
||||
xSnprintf(buffer, sizeof(buffer), "%u", nJobs);
|
||||
}
|
||||
RichString_append(out, zeroDigitColor(nJobs), buffer);
|
||||
RichString_appendAscii(out, zeroDigitColor(nJobs), buffer);
|
||||
|
||||
RichString_append(out, CRT_colors[METER_TEXT], "/");
|
||||
RichString_appendAscii(out, CRT_colors[METER_TEXT], "/");
|
||||
|
||||
if (nInstalledJobs == INVALID_VALUE) {
|
||||
buffer[0] = '?';
|
||||
@ -307,9 +307,9 @@ static void SystemdMeter_display(ATTR_UNUSED const Object* cast, RichString* out
|
||||
} else {
|
||||
xSnprintf(buffer, sizeof(buffer), "%u", nInstalledJobs);
|
||||
}
|
||||
RichString_append(out, valueDigitColor(nInstalledJobs), buffer);
|
||||
RichString_appendAscii(out, valueDigitColor(nInstalledJobs), buffer);
|
||||
|
||||
RichString_append(out, CRT_colors[METER_TEXT], " jobs)");
|
||||
RichString_appendAscii(out, CRT_colors[METER_TEXT], " jobs)");
|
||||
}
|
||||
|
||||
static const int SystemdMeter_attributes[] = {
|
||||
|
@ -37,17 +37,19 @@ static void ZramMeter_updateValues(Meter* this, char* buffer, size_t size) {
|
||||
static void ZramMeter_display(const Object* cast, RichString* out) {
|
||||
char buffer[50];
|
||||
const Meter* this = (const Meter*)cast;
|
||||
RichString_write(out, CRT_colors[METER_TEXT], ":");
|
||||
Meter_humanUnit(buffer, this->total, sizeof(buffer));
|
||||
|
||||
RichString_append(out, CRT_colors[METER_VALUE], buffer);
|
||||
RichString_writeAscii(out, CRT_colors[METER_TEXT], ":");
|
||||
|
||||
Meter_humanUnit(buffer, this->total, sizeof(buffer));
|
||||
RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer);
|
||||
|
||||
Meter_humanUnit(buffer, this->values[0], 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[1], sizeof(buffer));
|
||||
RichString_append(out, CRT_colors[METER_TEXT], " uncompressed:");
|
||||
RichString_append(out, CRT_colors[METER_VALUE], buffer);
|
||||
RichString_appendAscii(out, CRT_colors[METER_TEXT], " uncompressed:");
|
||||
RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer);
|
||||
}
|
||||
|
||||
const MeterClass ZramMeter_class = {
|
||||
|
Reference in New Issue
Block a user