Skip to content

Instantly share code, notes, and snippets.

@kazuho
kazuho / fizzbuzz.c
Created September 21, 2023 03:11
optimized fizzbuzz in C, one branch prediction miss per 100 numbers, uses 64-bit stores
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define inline __attribute__((always_inline))
static char tens[16];
static size_t tenslen = 0;
@kazuho
kazuho / fizzbuzz.c
Created September 21, 2023 03:02
simple fizzbuzz in C
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int maxval;
if (argc < 2 || sscanf(argv[1], "%d", &maxval) != 1) {
fprintf(stderr, "usage: %s <max-value>\n", argv[0]);
exit(1);
// constants that were measured
mb_width = 170.5;
mb_depth = 170;
mb_thick = 2;
mb_holder1_depth = 29;
iopanel_x = -2;
iopanel_z = -2;
iopanel_width = 159;
iopanel_height = 45;
pcie_back_width = 20;
mb = [170.3, 170.3, 2];
case_thick = 2;
iopanel = [-2, -2, -2];
iopanel_width = 159;
iopanel_height = 45;
pcie_back_width = 20;
pcie_back_bottom_width = 12;
pcie_back_offset = 0;
mb = [170.3, 170.3, 2];
psu = [40.5, 151.5, 82.5];
mb_right_space = 11;
duct = [120, 130, 30];
duct_offset = 20;
fan_height = 30;
fan_size = 100;
case_thick = 3;
pcie_lp_bracket_height = 80;
// パラメータ
square_size = 40; // マス目の大きさ (mm)
board_size = 4; // チェス盤の大きさ (8x8)
thick = 10;
hole_width = 100;
hole_height = 5;
hole_depth = 5;
difference () {
inner_width = 90;
rasbpi_width = 65.3;
capture_width = 42.7;
mb_depth = 30.9;
mb_thick = 1.8;
hdmi_width = 18;
rasbpi_above = 3;
capture_below = 3;
width = 65.3;
depth = 30.6;
space_bottom = 3;
mb_thick = 1.5;
space_top = 10;
height = space_bottom + mb_thick + space_top;
case_thick = 2.5;
holder_size = 5;
corner_radius = 3;
hex_size = 10;
@kazuho
kazuho / thundering-herd.pl
Last active February 8, 2023 03:46
thundering herd checker for select-accept pattern
#! /usr/bin/perl
#
# to test:
# 1) run this script with either "accept" or "select-accept" as the argument
# (the script listens to 127.0.0.1:12345)
# 2) telnet localhost 12345
# 3) if you see "accept failed", there is the thundering herd problem
#
#
use strict;
diff --git a/src/iperf_api.c b/src/iperf_api.c
index 09ab6af..a54be44 100644
--- a/src/iperf_api.c
+++ b/src/iperf_api.c
@@ -4520,11 +4520,26 @@ diskfile_recv(struct iperf_stream *sp)
{
int r;
+#if 1
+ static int pipefds[2] = {-1, -1};