DEV Community

Golf-Lang
Golf-Lang

Posted on • Originally published at golf-lang.blogspot.com

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):

https://youtu.be/P2bdPP-3ZMY

Create new directory for the Golf server and also for C API client:

mkdir -p srv-example
cd srv-example
mkdir -p client
Enter fullscreen mode Exit fullscreen mode

Create file "srv.golf" and copy this:

begin-handler /srv public
    silent-header
    @Hello world!
end-handler
Enter fullscreen mode Exit fullscreen mode

Create Golf application server:

gg -k hello
Enter fullscreen mode Exit fullscreen mode

Start the application server (a single-process server in this case):

mgrg -w 1 hello
Enter fullscreen mode Exit fullscreen mode

Next, go to C API client directory:

cd client
Enter fullscreen mode Exit fullscreen mode

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;
    for (i = 0; i < 100000; i++)
    {
        gg_cli req;
        int res = golf_client (&req, "/var/lib/gg/hello/sock/sock", "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);
    }
}
Enter fullscreen mode Exit fullscreen mode

Compile the client:

gcc -o cli cli.c $(gg -i) -O3
Enter fullscreen mode Exit fullscreen mode

Run it:

./cli
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)