首页 / 知识
代理服务器的C#性能(vs C)
2023-04-13 09:34:00

C# Performance For Proxy Server (vs C++)我想创建一个简单的http代理服务器,该服务器对http标头进行一些非常基本的处理(即,如果标头x == y,请执行z)。服务器可能需要支持数百个用户。我可以用C#(非常简单)或c(更难)编写服务器。但是,C#版本的性能是否与C版本一样好?如果不是,那么性能差异是否足够大,以至于用C#编写它就没有意义了? 您可以在关键的瓶颈点使用不安全的C#代码和指针,以使其运行更快。它们的行为很像C代码,我相信它的执行速度也很快。 但是在大??多数情况下,C#已经在速度上达到了极速,我不相信每个人都说过会有什么不同。 但是您可能要考虑的一件事是:与在C中有效使用指针相比,托管代码(C#)字符串操作相当慢。使用C指针比使用CLR字符串有更多的优化技巧。 我想我以前做过一些基准测试,但是不记得我把它们放在哪里了。 为什么您期望C应用程序具有更高的性能? 当您正确执行操作时,C#应用程序不会增加任何固有的速度减慢。 (没有太多丢弃的引用,频繁的对象创建/每次调用丢弃等)。 只有当您可以执行(非常)低级操作时,C应用程序才能真正胜过等效的C#应用??程序。例如。转换原始内存指针,内联汇编程序等。 C编译器在创建快速代码方面可能会更好,但是大多数情况下,这在大多数应用程序中都是浪费的。如果您确实有一部分应用程序必须非常快,那么请尝试为该热点编写C调用。 仅当大多数系统的运行速度过慢时,才应考虑使用C / C编写它。但是有很多陷阱可能会破坏您在C代码中的性能。 (TLDR:C专家可以像C#专家一样创建"更快"的代码,但是平庸的C程序员可以比平庸的C#编写更慢的代码) 我希望C#版本与C版本几乎一样快,但占用的内存更少。 作为旁注,我可以回忆起Michael Kaplan(c#)和Raymond Chan(C)在Blog圈中的性能"竞争",它编写了一个程序,其作用完全相同。经过长时间的努力重写了大部分代码后,被认为是世界上最好的程序员之一(乔尔)的Raymond Chan成功地编写了更快的C语言。 您的http服务器是否要在专用计算机上运行?如果是的话,我想说如果您更方便的话,请使用C#。如果需要在同一台计算机上运行其他应用程序,则需要考虑应用程序的内存占用以及GC将在"随机"时间运行的事实。 如果您需要快速可靠的代理服务器,可以尝试一些已经存在的代理服务器。但是,如果您具有必需的自定义功能,则可能必须构建自己的功能。您可能希望收集有关预期负载的更多信息:数百个用户可能是一分钟几个请求,或者每秒一百个请求。 假设您需要在一台机器上以200 qps或以下的速度运行,C#应该可以轻松满足您的需求-即使以慢速而闻名的语言(例如Ruby)也可以轻松地每秒发出数百个请求。 除了性能外,还有其他选择C#的原因,例如与C#相比,用C语言编写缓冲区溢出要容易得多。 根据我的经验,设计和实现与性能的关系比语言/框架的选择要重要得多(但是,通常需要注意的是:例如,不要用C#或Java编写设备驱动程序)。铅> 对于使用托管语言(例如Java,C#等)描述的程序类型,我不会三思而后行。如今,使用低级语言(从与硬件的紧密性方面)获得的性能提升通常很容易被托管环境的运行时能力所抵消。当然,这是来自C#/ python开发人员的,所以我并非一无所知... 您描述的代理服务器将主要处理字符串数据,我认为在C#中实现它是合理的。在您的示例中,
最慢的部分实际上可能在执行'z',无论语言如何,您都必须执行该工作。 |
最新内容
相关内容
提升Python程序性能的好习惯
提升Python程序性能的好习惯,代码,名字,检测,数据,培训,模块,函数,变量,性能,对象,掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的Python可执行文件和模块
Python可执行文件和模块,标准,培训,模块,文件,属性,上面,内容,变量,函数,源码,python源代码文件按照功能可以分为两种类型:用于执行的可执行程python unittest控制用例的执行顺
python unittest控制用例的执行顺序,名字,交易,培训,方法,顺序,测试,方式,功能,订单,接口,为什么要进行顺序控制呢?使用过testng的同学就知道Python性能分析
Python性能分析,代码,分析,对比,时间,工具,标准,注释,跨行,通用,报告,python标准库提供两个代码性能分析相关的模块,即timeit和cProfile/profi使用Python执行系统命令方法
使用Python执行系统命令方法,系统,信息,培训,标准,命令,方法,模块,操作,终端,中文,Python是一款操作简单的编程语言,内置丰富的库,能够很容易的python如何让程序暂停执行和继续执
python如何让程序暂停执行和继续执行?,暂停,培训,程序,继续,空格键,函数,以上,操作,方法,更多,python让程序继续执行的方法:一、使用到的函数python如何获取程序执行时间?
python如何获取程序执行时间?,代码,培训,标准,程序,方法,中间,使用方法,以上,手册,更多,python获取程序执行时间的方法:1、使用time.clock()方批处理怎么执行Python程序
批处理怎么执行Python程序,培训,方式,文件,程序,脚本,文件夹,路径,命令,以上,格式,批处理执行Python程序的方式:第一种方式:@echooffC:cdC:\Upython怎么定义用户输入
python怎么定义用户输入,培训,字符串,整数,类型,用户,文本,定义,文档,小数点,位数,python中获取用户输入的方法如下:整数输入#!/usr/bin/pythopython执行报错有哪些原因
python执行报错有哪些原因,时报,培训,横线,标点符号,错误,原因,目录,法名,程序,都会,python执行时报错,可能是以下的几种原因1、运行出现objeccmd中如何执行Python文件
cmd中如何执行Python文件,第一,名称,培训,文件夹,目录,文件,驱动器,序列号,指令,路径,以进入D盘文件夹,安装python第三方库pip为例:第一种方法_如何中断python的执行
如何中断python的执行,暂停,时间,培训,模块,语句,可能会,有所不同,长短,上下,手段,在Python3中已经有很大一部分语句与Python2不互通了,运行暂