I was checking the index build times on our perf cluster for both partitioned index and non-partitoned index. The test builds secondary index. When indexing 100M docs, the partitioned index build was almost 3 times faster than non-partitioned index (Non-partitioned index took 580 sec, partitioned index too 168 seconds). This is possibly due to our cluster configuration. So, I think we need to understand more about the test you are trying and see why there such a performance. Can you share the cbcollect logs so that we can study and understand the reason for such a build time.
For IndexServiceMemory quota, it depends on a lot of factors like doc size, number of indexes, type of index etc. I can give you a rough idea but this may not be completely accurate. If you are indexing 10M docs, and the avg. size of indexable value is 100 bytes (say), then for close to 100% resident ratio, data size with overheads would come to around (10M * (100 + 56) * 2). ~= 3G. I would set the quota to 4G to accommodate for indexer rss. This is just a rough calculation as there are many other factors that should be considered.
PS: If you are already an enterprise customer, you can get it touch with Couchbase Professional Services team to help you with sizing.