@cryptotaxi247 / netdata-1 / commits / 0f0a5fa3e

even more optimizations for all.json

Costa Tsaousis (ktsaou) committed Apr 29, 2014 at 02:22 UTC 0f0a5fa3ebabbeab6f50d4b3c0d7796fa8ceacba
1 file changed +68 -61
netdata.c
+68 -61
@@ -1277,6 +1277,50 @@ size_t rrd_stats_first_entry(RRD_STATS *st)
1277 return first_entry;
1278 }
1279
1280 +long double rrd_stats_dimension_get(RRD_DIMENSION *rd, size_t position)
1281 +{
1282 + if(rd->issigned) {
1283 + if(rd->bytes == sizeof(long long)) {
1284 + long long *dimension = rd->values;
1285 + return(dimension[position]);
1286 + }
1287 + else if(rd->bytes == sizeof(long)) {
1288 + long *dimension = rd->values;
1289 + return(dimension[position]);
1290 + }
1291 + else if(rd->bytes == sizeof(short int)) {
1292 + short int *dimension = rd->values;
1293 + return(dimension[position]);
1294 + }
1295 + else if(rd->bytes == sizeof(char)) {
1296 + char *dimension = rd->values;
1297 + return(dimension[position]);
1298 + }
1299 + else fatal("Cannot produce JSON for size %d bytes (signed) dimension.", rd->bytes);
1300 + }
1301 + else {
1302 + if(rd->bytes == sizeof(unsigned long long)) {
1303 + unsigned long long *dimension = rd->values;
1304 + return(dimension[position]);
1305 + }
1306 + else if(rd->bytes == sizeof(unsigned long)) {
1307 + unsigned long *dimension = rd->values;
1308 + return(dimension[position]);
1309 + }
1310 + else if(rd->bytes == sizeof(unsigned short int)) {
1311 + unsigned short int *dimension = rd->values;
1312 + return(dimension[position]);
1313 + }
1314 + else if(rd->bytes == sizeof(unsigned char)) {
1315 + unsigned char *dimension = rd->values;
1316 + return(dimension[position]);
1317 + }
1318 + else fatal("Cannot produce JSON for size %d bytes (unsigned) dimension.", rd->bytes);
1319 + }
1320 +
1321 + return(0);
1322 +}
1323 +
1324 unsigned long rrd_stats_one_json(RRD_STATS *st, char *options, struct web_buffer *wb)
1325 {
1326 web_buffer_increase(wb, 16384);
@@ -1357,17 +1401,18 @@ unsigned long rrd_stats_one_json(RRD_STATS *st, char *options, struct web_buffer
1401
1402 web_buffer_printf(wb,
1403 "\t\t\t\t{\n"
1360 - "\t\t\t\t\t\"id\" : \"%s\",\n"
1361 - "\t\t\t\t\t\"name\" : \"%s\",\n"
1362 - "\t\t\t\t\t\"bytes\" : %ld,\n"
1363 - "\t\t\t\t\t\"entries\" : %ld,\n"
1364 - "\t\t\t\t\t\"isSigned\" : %d,\n"
1365 - "\t\t\t\t\t\"isHidden\" : %d,\n"
1366 - "\t\t\t\t\t\"algorithm\" : \"%s\",\n"
1367 - "\t\t\t\t\t\"multiplier\" : %ld,\n"
1368 - "\t\t\t\t\t\"divisor\" : %ld,\n"
1369 - "\t\t\t\t\t\"last_entry_t\" : %lu,\n"
1370 - "\t\t\t\t\t\"memory\" : %lu\n"
1404 + "\t\t\t\t\t\"id\": \"%s\",\n"
1405 + "\t\t\t\t\t\"name\": \"%s\",\n"
1406 + "\t\t\t\t\t\"bytes\": %ld,\n"
1407 + "\t\t\t\t\t\"entries\": %ld,\n"
1408 + "\t\t\t\t\t\"isSigned\": %d,\n"
1409 + "\t\t\t\t\t\"isHidden\": %d,\n"
1410 + "\t\t\t\t\t\"algorithm\": \"%s\",\n"
1411 + "\t\t\t\t\t\"multiplier\": %ld,\n"
1412 + "\t\t\t\t\t\"divisor\": %ld,\n"
1413 + "\t\t\t\t\t\"last_entry_t\": %lu,\n"
1414 + "\t\t\t\t\t\"memory\": %lu,\n"
1415 + "\t\t\t\t\t\"last_collected_value\": %0.1Lf\n"
1416 "\t\t\t\t}%s\n"
1417 , rd->id
1418 , rd->name
@@ -1380,6 +1425,7 @@ unsigned long rrd_stats_one_json(RRD_STATS *st, char *options, struct web_buffer
1425 , rd->divisor
1426 , rd->last_updated
1427 , rdmem
1428 + , rrd_stats_dimension_get(rd, st->current_entry)
1429 , rd->next?",":""
1430 );
1431 }
@@ -1425,56 +1471,17 @@ void rrd_stats_all_json(struct web_buffer *wb)
1471 }
1472 }
1473
1428 - web_buffer_printf(wb, "\n\t],\n");
1429 - web_buffer_printf(wb, "\t\"hostname\": \"%s\",\n", hostname);
1430 - web_buffer_printf(wb, "\t\"update_every\": %d,\n", update_every);
1431 - web_buffer_printf(wb, "\t\"history\": %d,\n", save_history);
1432 - web_buffer_printf(wb, "\t\"memory\": %lu\n", memory);
1433 - web_buffer_printf(wb, "}\n");
1434 -}
1435 -
1436 -long double rrd_stats_dimension_get(RRD_DIMENSION *rd, size_t position)
1437 -{
1438 - if(rd->issigned) {
1439 - if(rd->bytes == sizeof(long long)) {
1440 - long long *dimension = rd->values;
1441 - return(dimension[position]);
1442 - }
1443 - else if(rd->bytes == sizeof(long)) {
1444 - long *dimension = rd->values;
1445 - return(dimension[position]);
1446 - }
1447 - else if(rd->bytes == sizeof(short int)) {
1448 - short int *dimension = rd->values;
1449 - return(dimension[position]);
1450 - }
1451 - else if(rd->bytes == sizeof(char)) {
1452 - char *dimension = rd->values;
1453 - return(dimension[position]);
1454 - }
1455 - else fatal("Cannot produce JSON for size %d bytes (signed) dimension.", rd->bytes);
1456 - }
1457 - else {
1458 - if(rd->bytes == sizeof(unsigned long long)) {
1459 - unsigned long long *dimension = rd->values;
1460 - return(dimension[position]);
1461 - }
1462 - else if(rd->bytes == sizeof(unsigned long)) {
1463 - unsigned long *dimension = rd->values;
1464 - return(dimension[position]);
1465 - }
1466 - else if(rd->bytes == sizeof(unsigned short int)) {
1467 - unsigned short int *dimension = rd->values;
1468 - return(dimension[position]);
1469 - }
1470 - else if(rd->bytes == sizeof(unsigned char)) {
1471 - unsigned char *dimension = rd->values;
1472 - return(dimension[position]);
1473 - }
1474 - else fatal("Cannot produce JSON for size %d bytes (unsigned) dimension.", rd->bytes);
1475 - }
1476 -
1477 - return(0);
1474 + web_buffer_printf(wb, "\n\t],\n"
1475 + "\t\"hostname\": \"%s\",\n"
1476 + "\t\"update_every\": %d,\n"
1477 + "\t\"history\": %d,\n"
1478 + "\t\"memory\": %lu\n"
1479 + "}\n"
1480 + , hostname
1481 + , update_every
1482 + , save_history
1483 + , memory
1484 + );
1485 }
1486
1487 unsigned long rrd_stats_json(int type, RRD_STATS *st, struct web_buffer *wb, size_t entries_to_show, size_t group, int group_method, time_t after, time_t before)