Skip to content

Instantly share code, notes, and snippets.

@robotman2412
Last active July 20, 2020 14:29
Show Gist options
  • Save robotman2412/80fc6c8d1bdcfa93ebb3eb30515ee185 to your computer and use it in GitHub Desktop.
Save robotman2412/80fc6c8d1bdcfa93ebb3eb30515ee185 to your computer and use it in GitHub Desktop.
Python torture test.
-----C++------
// I really just picked one of the functions :P
static mp_obj_t framebuffer_transformPoint(mp_uint_t n_args, const mp_obj_t *args)
{
Window* window = NULL;
matrix_stack_2d* stack = NULL;
int paramOffset = 0;
if (MP_OBJ_IS_STR(args[0])) {
if (n_args < 3) {
mp_raise_ValueError("Expected: window, x, y");
return mp_const_none;
}
window = driver_framebuffer_window_find(mp_obj_str_get_str(args[0]));
if (!window) {
mp_raise_ValueError("Window not found");
return mp_const_none;
}
paramOffset++;
stack = window->stack_2d;
}
else
{
if (n_args < 2) {
mp_raise_ValueError("Expected: x, y");
return mp_const_none;
}
stack = &stack_2d_global;
}
double x = mp_obj_get_float(args[paramOffset]);
double y = mp_obj_get_float(args[paramOffset + 1]);
//printf("%f, %f -> ", x, y);
matrix_2d_transform_point(stack->current, &x, &y);
//printf("%f, %f\n", x, y);
mp_obj_t out[2] = {
mp_obj_new_float(x),
mp_obj_new_float(y)
};
return mp_obj_new_tuple(2, out);
}
----PYTHON----
import display, time
def ultimateHyperdeath(a, b):
return a * 3 + b * 1, b * 3 + a * 1
print("100K python calls with args...")
start = time.time()
for i in range(100000):
a, b = ultimateHyperdeath(40, 40)
end = time.time()
took = end - start
print("Done! Took {}s {}ms.".format(int(took), int(took * 1000 % 1000)))
print("100K C calls with args...")
start = time.time()
for i in range(100000):
a, b = display.transformPoint(40, 40)
end = time.time()
took = end - start
print("Done! Took {}s {}ms.".format(int(took), int(took * 1000 % 1000)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment