首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进程间通信使用套接字的限制是什么?

进程间通信使用套接字的限制是什么?
EN

Stack Overflow用户
提问于 2010-11-26 17:38:44
回答 1查看 1.5K关注 0票数 5

我正在创建一个Firefox扩展,允许在Firefox中使用标准ML (SML)作为客户端编程语言。它的工作方式如下:

扩展启动一个evaluation.

  • That进程(带有顶级交互shell的SML编译器)。然后在扩展和PolyML进程之间建立套接字通信。从网页读取

  • SML代码,并通过套接字发送到PolyML进程,用于处理PolyML代码,然后使用我提供的库来处理DOM.

以下是如何实现DOM库:

DOM.getElementById

  • This请求通过套接字转发给扩展,其中扩展在页面上执行JavaScript函数getElementById,并通过套接字将结果发送回PolyML进程。

我的问题是,在理论上,当涉及到套接字通信时,我应该期望在性能方面有哪些限制?

我做了一些非常近似的分析,使用扩展和PolyML之间的这个接口,我可以大约发送2500条消息/秒,平均大小为70字节/消息

要将其置于更多的上下文中,假设我希望使用Canvas元素在浏览器中绘制一些动画。如果我想达到20 per,这意味着我需要在0.05秒内绘制每帧,这意味着我只能发送125条消息每帧。这些消息对应于JavaScript函数调用。例如,下面的代码绘制一个路径并进行9个JavaScript函数调用,这些调用对应于套接字通信中的9个消息。

val _= Canvas.beginPath context;val _= Canvas.setFillStyle context fillColor;val _= Canvas.setStrokeStyle context fillColor;val _= Canvas.setLineWidth上下文大小;val _= Canvas.moveTo context posy;val _= Canvas.lineTo context posx_new posy_new;val _= Canvas.stroke context;val _= Canvas.arc context posx_new posy_new (size/2.0) 0.0 6.28 true;val _= Canvas.fill context;

显然,JavaScript的性能要好得多,我可以想象,您可以在这0.05秒内进行数千次(数百次)更多的画布/DOM函数调用,以绘制一个框架。

所以,我想我的问题是,您有使用套接字通信进行快速消息交换的经验吗?我想知道2500条小消息/秒(在这种情况下,对应于150千字节/秒)是否是正确的,或者我可能做了非常错误的事情。

例如,一种怀疑是firefox中的套接字实现(特别是通过JavaScript接口https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIServerSocket使用它)对于这种快速交互不是很好。例如,从套接字读取是通过事件循环机制。那就是我依赖火狐。通知我传入套接字消息的可用性,有时在发送消息和接收消息之间会出现很大的延迟(例如250 is )(尽管这似乎只是在firefox忙于做其他事情时才发生的,而我对..theoretical更感兴趣。套接字通信的限制)

有什么想法,什么想法,有什么缺点吗?您认为使用其他IPC机制会更好吗,例如管道,实现我从C++ XPCOM组件(而不是从JavaScript )到C的外部函数接口( JavaScript和PolyML都有)的通信?

(如果有人感兴趣,该项目位于https://assembla.com/wiki/show/polymlext )

EN

回答 1

Stack Overflow用户

发布于 2014-06-07 05:55:44

TCP可以被调优以获得更高的吞吐量或更快的响应时间。为了获得更高的吞吐量,需要将套接字缓冲区设置为更大的值。为了获得较小数据块的良好响应时间,需要设置TCP_NODELAY套接字选项。TCP的回环,如果它的微调,它应该是相同的任何IPC机制。较新的windows在环回适配器上进行特殊优化,如增加MTU大小等,以使其更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4287474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档