水木社区手机版
首页
|版面-编程技术(Programming)|
新版wap站已上线
返回
1/1
|
转到
主题:c# 9.0 有重大改进!
19楼
|
leadu
|
2021-04-24 20:16:10
|
展开
go除了gc效率比.net高,别的方面是c#的子集。
比如channel。go的channel主要是pipe概念拼上个select。c#有Rx.NET,是pipe加上了linq那一堆操作(select、where、Distinct、Skip、Sum等),并且支持线程调整,比go的channel强大很多。
Rx.NET也是微软出的,事实上是linq2.0
再比如协程。go的协程,看起来就是Windows xp里面新加的那个QueueUserWorkItem api。这个api也能被c++调用,微软都扔进legacyapiset里面了。
下面列出的场景是c#全部支持的,每个场景后面给的是c#相关的搜索关键字。go的协程我并不敢说非常熟悉,也许会有个别go也能支持的,但下面大部分场景go应该都不支持。
1.一个线程(协程)能不能等待另外一个协程的返回值?await
2.协程结束能不能回到当前线程?(回到ui线程)await
3.能不能等待一批协程一起返回?Task.whenall
4.协程出异常了通知调用者?throw
5.协程链。ContinueWith
6.abort协程。CancellationToken
7.协程对线程的对应模型,能不能既要防止线程创建颠簸,又要防止慢热?threadpool.setminthreads
8.可不可以自定义, 协程对线程的对应模型?TaskScheduler
9.语法糖,并发若干数目的协程处理集合。parallel LINQ,parallel.for,parallel.foreach。java抄了一个过去,好像叫什么stream。
10.协程first class化并在其上做集合有关的操作。Dataflow。这个是c#做的非常强大的一个功能,提供了协程的二阶操作。互联网常见的限流操作用这个也就是几行代码。
还有一些比如互斥原语什么的就不细说了。这些其实是.net的功能,f#、vb等语言也都可以调用
【 在 javafish 的大作中提到: 】
: golang笑而不语
:
--
FROM 123.115.136.*
21楼
|
leadu
|
2021-04-24 21:17:34
|
展开
https://medium.com/servicetitan-engineering/go-vs-c-part-2-garbage-collection-9384677f86f1
根据它的测试结果,c# gc stw高,别的比go好。
不过这个作者看看就行了,他的第一篇文章比的是协程性能,他的测试结果说go性能好,然后被人在评论区优化了一版变成c#性能更好了。go的方面有人有意见但没有见到新代码
至于字符编码这事我倒是觉得差不多。正经网络程序是要序列化的,而且全中文环境utf8占更多空间。utf16在不严格的情况下数个数更快。我个人觉得很难说哪个更好。
【 在 keygen 的大作中提到: 】
: go 的 GC 效率高哪里看出来的?
: 之前不是饱受诟病吗?虽然后来改进了点,但也没见人吹啊
: go 的字符串是 UTF8 编码的,对网络编程友好。这个比 .net 的好
: ...................
--
FROM 123.115.136.*
26楼
|
leadu
|
2021-04-24 22:19:46
|
展开
分不同的情况
如果是channel返回的只有一个值,对应的c#里面直接await协程或是task.whenany即可,不需要channel的介入。
如果协程会持续返回值,不停的向channel发送值,可以使用下面这个代码示例
var s1 = Observable.Interval(TimeSpan.FromMilliseconds(250)).Take(3);
var s2 = Observable.Interval(TimeSpan.FromMilliseconds(150)).Take(5).Select(i => i + 100);
s1.Merge(s2).Subscribe(Console.WriteLine,()=>Console.WriteLine("Completed"));
也可以使用dataflow中最简单的ActionBlock<TInput>
Merge或ActionBlock的另外一个好处在于,在没有值可以处理的间隙,只有两个协程是活着的,而go似乎是3个?
【 在 javafish 的大作中提到: 】
: 问一下
: select channel在Rx里咋实现的?
: 垒一串zipWhen么?
: ...................
--
FROM 123.115.136.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版