我一直很欣赏原来的uTorrent程序.它看起来很棒,不到64kb,非常快,并且拥有我需要的所有功能.不幸的是,该程序是封闭源程序(并且当天变得更加臃肿)所以我来到Stackoverflow获取灵感.
在Windows上编写快速,内存高效且优雅的程序时,您建议使用哪些方法?
虽然C#(以及整个.NET概念)都是很酷的想法,但我更感兴趣的是"纯粹主义"的答案以及为Windows平台编写高效,快速软件的挑战,就像最初的uTorrent客户端一样.我不介意分配自己的内存,做我自己的垃圾收集和创建自己的数据结构.
关于书籍,文章,图书馆,IDE的建议(甚至是将更多咖啡因纳入我的系统的有效方法)也受到欢迎.
我在1997年学习了Turbo Pascal,我非常喜欢它作为一种语言.一切都非常有条理,编译器确保你以正确的方式做事.我后来尝试过Delphi但从未对它感兴趣.
从那时起,我使用了许多不同的编程和脚本语言(C,C++,PHP,Python,Perl,TCL),最近我开始考虑我的旧Turbo Pascal时代.
所以,我想知道Pascal在今天可能有用的实用目的以及可用的API和框架.有没有人在现代开发环境中使用Pascal或者它只是一种死语言?
澄清我的问题:Pascal可以用于现代应用程序开发.它是否被使用以及如何使用?
维基百科链接或快速谷歌搜索无济于事,我一直在那里.这就是我问"专家"的原因.
如果我有一个多线程程序通过引用读取缓存类型的内存.我可以通过主线程更改此指针,而不会冒任何其他线程读取意外值的风险.
在我看来,如果更改是原子的,其他线程将读取旧值或更新值; 从不随机内存(或空指针),对吧?
我知道无论如何我应该使用同步方法,但我仍然很好奇.
指针变化是原子的吗?
更新:我的平台是64位Linux(2.6.29),虽然我也想要一个跨平台的答案:)
我有兴趣学习如何编写极其高效的网络服务器软件,我不介意用指针,套接字和线程弄脏手.我说的是能够处理数千个并发连接的服务器.每个客户端没有太多处理,但有一点.
您知道真正高效的网络服务器的任何代码示例吗?
可选地指向跨平台的小型,文档齐全的代码.
我正在使用epoll(边缘触发)和线程的线程网络服务器,我正在使用httperf来对我的服务器进行基准测试.
到目前为止,它的表现非常好或几乎完全符合发送请求的速度.直到1024障碍,一切都放慢到大约30个请求/秒.
在64位的Ubuntu 9.04上运行.
我已经尝试过了:
andri @ filefridge:〜/ Dropbox/School/Group 452/Code/server $ ulimit -n
20000
我很确定这种减速是在操作系统中发生的,因为它发生在事件发送到epoll之前(是的,我也增加了epoll的限制).
我需要对程序可以处理的并发连接数进行基准测试,直到它开始变慢(没有操作系统干扰).
如何让我的程序运行超过1024个文件描述符?
这个限制可能是有原因的,但是出于基准测试的目的,我需要它.
谢谢你的所有答案,但我想我找到了罪魁祸首.在我的程序中重新定义__FD_SETSIZE后,一切开始变得更快.当然ulimit也需要提升,但没有__FD_SETSIZE我的程序永远不会利用它.
背景
该服务是一个简单的 Go 程序,它将文件从 Cloud Storage 传送到浏览器。
在我的 Macbook 上一切正常,但对于某些请求在 Cloud-Run(托管)上失败。主要是大型 mp4 文件。
问题
日志只显示一个500状态,浏览器也是如此。但是我的服务除了开始复制文件之外没有记录任何内容。没有 IO 错误或任何东西。
此消息在500状态前 4 秒显示:
Container Sandbox Limitation: Unsupported syscall membarrier(0x10,0x0,0x0,0x8,0x775dce0b030,0x775dce0b000). Please, refer to https://gvisor.dev/c/linux/amd64/membarrier for more information.
我无法在本地重现此内容。使用相同的配置和 GCP 存储桶在本地正常工作。
该服务在带有较小文件(如图像)的 Cloud-Run 上运行良好。只是不是我试过的视频。
我试过了
io.Copy. 没有错误,io.Copy调用后挂起。更新 2019-08-16
我创建了一个非常简单的服务,将“A”打印到 http responsewriter。它也可以在本地完美运行,但在云运行中以较大的尺寸返回 500。1MB OK,5MB OK,50MB 失败,100MB 失败等等。这个服务运行时没有 membarrier 消息。
代码可在此处获得:https : //github.com/andrioid/reproduce-cloud-run-bug
也报告了问题跟踪器:https : //issuetracker.google.com/issues/139511257 …