相关文章推荐
腼腆的针织衫  ·  ActiveX ...·  3 周前    · 
善良的红茶  ·  SQLPrepare 函数 - ODBC ...·  2 周前    · 
飘逸的荔枝  ·  WebSockets support in ...·  2 周前    · 
安静的生菜  ·  “npm run dev”和“npm ...·  7 月前    · 
读研的肉夹馍  ·  vue2清空数组了 ...·  1 年前    · 

I am just wondering if below code changes (New Code) make any difference in performance with respective to calling cosmos from a web api

Old Code:

public string GetDocs()
return JsonConvert.SerializeObject(CreateDocumentQuery().ToList());

New Code:

public Task<string> GetDocs()
return JsonConvert.SerializeObject(CreateDocumentQuery().ToList());

So adding Task<string> makes the method async or will it make any difference?

please help in understanding this, Thanks in advance.

Regards,
Sravan kumar

Sorry I missed "async" in the signature, the new code is like below

New Code:

public async Task<string> GetDocs()
return JsonConvert.SerializeObject(CreateDocumentQuery().ToList());
@Viorel , @Karen Payne MVP : actually i'm not trying to include any await method calling inside "GetDocs" method, simply i want to know if the above code (new code ) makes any difference when compared with the the old code by changing only the signature of the method

Thanks,
Sravan kumar

Using your version, you will probably see a warning: “This async method lacks 'await' operators and will run synchronously” . I think that it means that you did not get any benefit.

The new function will not make JavaConvert.Serialize faster. However, using async functions correctly it is possible to execute JavaConvert.Serialize in parallel with other operations. This could improve the overall performance.

Hello,

If you want to write this correctly you should mark the method async, here is a base framework. The main reason for using async is to keep things responsive, otherwise stick with synchronous code.

Requires System.Text.Json reference as this is not Newtonsoft library.

public class Demo
    public static async Task<string> WorkTask(object obj)
        string json = string.Empty;
        await using var stream = new MemoryStream();
        await JsonSerializer.SerializeAsync(stream, obj, obj.GetType());
        stream.Position = 0;
        using var reader = new StreamReader(stream);
        return await reader.ReadToEndAsync();