34000 requests per second on a modest laptop


Here's a video showing how to create and start an application server, and how to connect to it and make requests from a C client (or from any language that supports C API extension), you can watch a video here.
Create new directory for the Golf server and also for C API client:
mkdir -p srv-example
cd srv-example
mkdir -p client

Create file "srv.golf" and copy this:
begin-handler /srv public
    silent-header
    @Hello world!
end-handler

Create Golf application server:
gg -k hello

Build Golf application server (exclude client directory as it contains C API client):
gg -q --exclude-dir=client

Start the application server (a single-process server in this case):
mgrg -w 1 hello

Next, go to C API client directory:
cd client

Then create C file "cli.c" and copy this:
#include "gcli.h"

int golf_client (gg_cli *req, char *connection, char *method, char *app_path, char *request, char *url_params);

int golf_client (gg_cli *req, char *connection, char *method, char *app_path, char *request, char *url_params)
{
    memset ((char*)req, 0, sizeof(gg_cli));
    req->server = connection;
    req->req_method = method;
    req->app_path = app_path;
    req->req = request;
    req->url_params = url_params;
    return gg_cli_request (req);
}

void main ()
{
    int i;
    char dir[GG_MAX_OS_UDIR_LEN];
    gg_dir (GG_DIR_SOCKFILE, dir, sizeof(dir), "hello", NULL);
    for (i = 0; i < 100000; i++)
    {
        gg_cli req;
        int res = golf_client (&req, dir, "GET", "/hello", "/srv", "/");
        if (res != GG_OKAY) printf("Request failed [%d] [%s]\n", res, req.errm);
        else printf("%s", gg_cli_data(&req));
        gg_cli_delete(&req);
    }
}

Compile the client:
gcc -o cli cli.c $(gg -i) -O3

Run it:
./cli

The result is "Hello world!" 100,000 times from each request invocation.


Copyright (c) 2019-2025 Gliim LLC. All contents on this web site is "AS IS" without warranties or guarantees of any kind.