Slow insert performance with Sync Gateway REST API

I’m trying to bulkinsert some existing data from a RDMS into couchbase through Sync Gateway REST API and sync them with mobile clients (Xamarin).
Performance is terrible, so I’ve set up a simple test - insert 1000 small documents

 string json =
			""Code"": "":Code"",
			""Name"": ""Product description""
            for (int i = 0; i < 1000; i++) {
                string DocId = "BulkInsertTest::" + Guid.NewGuid().ToString();
                var request = new RestRequest(DocId, Method.PUT);
                request.JsonSerializer.ContentType = "application/json";
                request.AddParameter("application/json", json, ParameterType.RequestBody);
                json = json.Replace(":Code", i.ToString());
                IRestResponse response = new RestClient(URL).Execute(request);

The code above takes more than a minute to complete, i.e. I can only manage 15 inserts per second.
Is this the normal performance I should expect?
All the setup is running on a single PC, pretty decent HW - SSD, 16Gb RAM, i7 cpu.
Thanks in advance!
I tried to bypass the Sync Gateway and test insert performance of Couchbase.
I’ve run this code:

var config = new ClientConfiguration();
        config.Servers = new List<Uri> { new Uri("http://localhost:8091") };
        config.BucketConfigs.FirstOrDefault().Value.BucketName = "MyTestBucket";
        config.UseSsl = false;
        bucket = ClusterHelper.GetBucket("MyTestBucket");
        for (int i = 0; i < 1000; i++) {
            Document<Product> doc = new Document<Product>() { Content = new Product() { Code = i.ToString(), Name = "Product description" }, Id = "BulkInsertDirect::" + Guid.NewGuid().ToString() };                
            var res = bucket.Upsert<Product>(doc);                

And it took 76 seconds to complete. That’s about 15 inserts per second?!
I’m stumbled.
Please, give me a hint - is this the normal / expected performance of the product and there is no need to further test or try to optimize?

In both cases the insert throughput is much slower than the product capacity, but I can’t tell from your comments where exactly you’re hitting the bottleneck. In the Sync Gateway case, you could add some timing around your inserts to figure out how much of the ~66ms/write is the REST call, and how much is request building.

However, if you want to optimize insert throughput, you should be using Sync Gateway’s bulk API to do inserts - this will cut down on network overhead:

Weird – that’s too slow by orders of magnitude! Since this happens when writing directly to Couchbase Server, it seems like a configuration issue there. You should re-ask the second half of your question over on the Couchbase Server forum.

Thank you for the feedback.
It turns out there is some weird problem with C# Tasks , winforms and couchbase driver when used together.
I’ve downloaded
and run the BulkInsert test. It performed nicely with about 1000 inserts per second.
Then I simply copied it in my project (WinForms) and attached it to an onclicked event of a button - And the performance dropped to 15 per second!!!
Then I changed

var bulkResult = await Task.Run(() => _bucket.Upsert(bulkData));
var bulkResult = _bucket.Upsert(bulkData);

and I had the 1000 recs per second speed again… strange…

Removing tasks and having plain-old-freezing buttons while waiting for the insert to complete increased sync gateway performance to about 40 inserts per second, which still feels slow…
I’ve also tried to Adamf’s suggestion to use bulk_insert function - I didn’t improve performance at all, which is probably expected, since the server and client are on the same PC.
Anyway, thanks for the support.