Add benchmarks and change repetition count
Summary: The previous repetition count did not scale to many benchmarks. Also add more benchmarks Reviewed By: adamjernst Differential Revision: D3697280 fbshipit-source-id: 56fe424f36936445f31d6e9fa080abbdd816d32d
This commit is contained in:
committed by
Facebook Github Bot 0
parent
450472766d
commit
118f64f206
@@ -9,8 +9,20 @@
|
|||||||
|
|
||||||
#include "CSSBenchmark.h"
|
#include "CSSBenchmark.h"
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
#include <CSSLayout/CSSLayout.h>
|
#include <CSSLayout/CSSLayout.h>
|
||||||
|
|
||||||
|
// Measure functions can be quite slow, for example when measuring text.
|
||||||
|
// Simulate this by sleeping for 1 millisecond.
|
||||||
|
static CSSSize _measure(void *context, float width, CSSMeasureMode widthMode, float height, CSSMeasureMode heightMode) {
|
||||||
|
struct timespec sleeptime = {0, 1000000};
|
||||||
|
nanosleep(&sleeptime, NULL);
|
||||||
|
return (CSSSize) {
|
||||||
|
.width = widthMode == CSSMeasureModeUndefined ? 10 : width,
|
||||||
|
.height = heightMode == CSSMeasureModeUndefined ? 10 : width,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
CSS_BENCHMARKS({
|
CSS_BENCHMARKS({
|
||||||
|
|
||||||
CSS_BENCHMARK("Stack with flex", {
|
CSS_BENCHMARK("Stack with flex", {
|
||||||
@@ -18,14 +30,47 @@ CSS_BENCHMARKS({
|
|||||||
CSSNodeStyleSetWidth(root, 100);
|
CSSNodeStyleSetWidth(root, 100);
|
||||||
CSSNodeStyleSetHeight(root, 100);
|
CSSNodeStyleSetHeight(root, 100);
|
||||||
|
|
||||||
for (uint32_t i = 0; i < 3; i++) {
|
for (uint32_t i = 0; i < 10; i++) {
|
||||||
CSSNodeRef child = CSSNodeNew();
|
CSSNodeRef child = CSSNodeNew();
|
||||||
CSSNodeStyleSetHeight(child, 20);
|
CSSNodeSetMeasureFunc(child, _measure);
|
||||||
CSSNodeStyleSetFlex(child, 1);
|
CSSNodeStyleSetFlex(child, 1);
|
||||||
CSSNodeInsertChild(root, child, 0);
|
CSSNodeInsertChild(root, child, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
CSSNodeCalculateLayout(root, 100, 100, CSSDirectionLTR);
|
CSSNodeCalculateLayout(root, CSSUndefined, CSSUndefined, CSSDirectionLTR);
|
||||||
|
});
|
||||||
|
|
||||||
|
CSS_BENCHMARK("Align stretch in undefined axis", {
|
||||||
|
CSSNodeRef root = CSSNodeNew();
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < 10; i++) {
|
||||||
|
CSSNodeRef child = CSSNodeNew();
|
||||||
|
CSSNodeStyleSetHeight(child, 20);
|
||||||
|
CSSNodeSetMeasureFunc(child, _measure);
|
||||||
|
CSSNodeInsertChild(root, child, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
CSSNodeCalculateLayout(root, CSSUndefined, CSSUndefined, CSSDirectionLTR);
|
||||||
|
});
|
||||||
|
|
||||||
|
CSS_BENCHMARK("Nested flex", {
|
||||||
|
CSSNodeRef root = CSSNodeNew();
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < 10; i++) {
|
||||||
|
CSSNodeRef child = CSSNodeNew();
|
||||||
|
CSSNodeSetMeasureFunc(child, _measure);
|
||||||
|
CSSNodeStyleSetFlex(child, 1);
|
||||||
|
CSSNodeInsertChild(root, child, 0);
|
||||||
|
|
||||||
|
for (uint32_t ii = 0; ii < 10; ii++) {
|
||||||
|
CSSNodeRef grandChild = CSSNodeNew();
|
||||||
|
CSSNodeSetMeasureFunc(grandChild, _measure);
|
||||||
|
CSSNodeStyleSetFlex(grandChild, 1);
|
||||||
|
CSSNodeInsertChild(child, grandChild, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CSSNodeCalculateLayout(root, CSSUndefined, CSSUndefined, CSSDirectionLTR);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#define NUM_REPETITIONS 100000
|
#define NUM_REPETITIONS 100
|
||||||
|
|
||||||
#define CSS_BENCHMARKS(BLOCK) \
|
#define CSS_BENCHMARKS(BLOCK) \
|
||||||
int main(int argc, char const *argv[]) { \
|
int main(int argc, char const *argv[]) { \
|
||||||
|
Reference in New Issue
Block a user