How fast is Sightengine? How can I make Sightengine requests faster?
How fast is Sightengine?
Sightengine has been built with speed in mind. Images submitted to our Nudity Detection API for instance are usually processed within a few hundreds of milliseconds. This is much faster than what human moderators can achieve.
We achieve this through a series of steps:
Our inference algorithms have been optimized both for accuracy and speed.
We run them on specialized hardware (such as high-end CPUs and GPUs).
We hate queues. While vendors typically put incoming requests in queues and let them wait until a resource becomes available, we provision resources to make sure you never have to wait in a queue. Our default is queue-less processing.
We control the complete stack from end-to-end, obsessing over every detail to obtain high quality infrastructure (powerful bare-metal servers).
We optimize request latency by giving access to a geo-located inference network, where you can choose the location of the inference servers you use (this is an Enterprise option only).
Some of our models are heavier and take a bit more time to run than Nudity Detection. The largest ones are currently the Text Detection models. Those take closer to 1 second of processing on our standard plans.
Make requests even faster
When talking about speed, there are several elements that will influence the latency of requests to Sightengine:
The network overhead: this is the time it takes for you to perform a request to our servers. The time here will be influenced by the different steps (DNS lookup, TCP round-trips, SSL negotiation, etc.) and the distance between the servers.
Retrieving the image or video: depending on how you submit the image, our servers might have to perform an extra-step to retrieve it.
The actual image processing: this is the most important step, where we process your image or video.
That being said, there are a few things you can do to make sure you get the quickest responses:
Properly re-use connections between subsequent requests, so that you don't perform a new SSL negotiation/handshake on each request.
Prefer POSTing the images directly to the API, rather than sending a public URL to the image. This way our servers don't need the extra time to fetch the image.
If you need to run multiple checks on a given image or video, then make sure you batch those checks in a single request rather than doing separate API requests for each.
With our Enterprise plans, you can choose exactly where your images are processed and thus minimize latency by choosing a data center near your back-end. With the Enterprise plans you can also get ask for priority processing.