标签: latency

使用软件合成器制作实时音频应用程序

我正在研究制作一些使键盘功能像钢琴的软件(例如,用户按下'W'键,扬声器播放D音符).我可能会使用OpenAL.我理解数字音频的基础知识,但是在按键时播放实时音频会带来一些问题我无法解决.

问题在于:假设我有10个音频缓冲区,每个缓冲区都有一秒钟的音频数据.如果我必须在通过扬声器播放之前填充缓冲区,那么我会在播放前一两秒填充缓冲区.这意味着每当用户尝试播放音符时,按下琴键和正在播放的音符之间将有一到两秒的延迟.

你是如何解决这个问题的?你是否只是让缓冲区尽可能小,并尽可能地填充它们?有一些我不知道的伎俩吗?

audio synthesizer latency real-time openal

3
推荐指数
1
解决办法
1771
查看次数

好的多人/ mmo客户端<>服务器游戏是否在运动计算中使用延迟?

这里有几个问题.

想象一下,我有客户端A将要向服务器发送以下消息:"START START VVEMENT FORWARD".

服务器不会立即收到此消息,因为延迟会导致延迟.

问题1:ping(或更好:往返时间)是客户端向服务器发送消息并接收响应所需的时间.如果您可以忽略服务器注意到它已收到消息并开始发送响应(这应该非常短)所需的时间,这是否意味着以下内容?

  1. 客户端向服务器发送一些内容所需的时间=往返时间/ 2
  2. 服务器向客户端发送内容所需的时间=往返时间/ 2

因此,当客户端A发送该消息时,服务器将在客户端发送消息后的往返时间/ 2毫秒内接收该消息.这引出了我的下一个问题.

问题2:如果客户端首先发送包,然后在实际执行客户端命令(在这种情况下:向前移动)之前等待往返时间/ 2毫秒以补偿延迟/延迟?

现在,服务器将向所有附近的玩家发送以下消息:"客户端A现在正在向前移动".然后,这些客户端将确保客户端a的角色开始移动,这将引导我进入下一个问题.

问题3:客户端是否应该收到其他客户端已移动的消息,并考虑到此消息是由服务器往返时间/ 2毫秒发送的?那么用于运动计算时间戳的当前时间应该减少往返时间/ 2?

在我看来,所有这些方法都会确保客户端之间的同步得到改善,因为延迟会被考虑在内.这是正确的做事方式吗?大多数其他好的多人游戏都这样做吗?您想提供的任何评论,建议,替代方案或随机但相关的呼喊?提前致谢.

synchronization latency multiplayer roundtrip

3
推荐指数
1
解决办法
7616
查看次数

javascript:有没有JS可以测试网络速度?

我将测试我的网站速度,主要是网络服务器延迟.总结一下我想要实现的目标:

1)在我的网站上托管javascript的网页(http://myweb.com/test-speed.html)

2)我把这个网址给了我的朋友

3)他们不需要做任何事情,他们只需要访问这个网页,然后在网页上打印延迟.

4)如果网页也可以告诉访问者所处的状态(使用IP地址范围数据库),那将是一个加号.

现有解决方案吗?我可以修改javascript以将数据记录到数据库中,但我认为这里的核心是如何编写javascript以了解延迟.

javascript latency web

3
推荐指数
1
解决办法
6998
查看次数

iPhone应用程序中不同声音之间的延迟

我正在尝试制作一个带有一些按钮的小型iPhone应用程序来播放WAV声音.我的按钮工作,但我有一个小延迟(~0.5秒).

这是我的.m文件:

#import "buttonSoundViewController.h"

@implementation buttonSoundViewController
//@synthesize player;

-(IBAction) playSoundA:(id)sender{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"a" ofType:@"wav"];
    AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];
}

-(IBAction) playSoundB:(id)sender{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"b" ofType:@"wav"];
    AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
    [player release];
}

-(void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error {
}

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player {
}

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player {
}

- (void)didReceiveMemoryWarning {
    [super …
Run Code Online (Sandbox Code Playgroud)

iphone audio cocoa-touch latency objective-c

3
推荐指数
1
解决办法
2693
查看次数

确定请求延迟

我正在Go中本地创建一个Pastry版本.从设计 [PDF]:

假设应用程序提供允许每个Pastry节点确定具有给定IP地址的节点与其自身的"距离"的功能.假设具有较低距离值的节点是更期望的.应用程序应根据其选择的邻近度量,使用traceroute或Internet子网映射等网络服务以及适当的缓存和近似技术来实现此功能,以最大限度地减少开销.

我试图找出从Go以编程方式确定两个EC2实例之间的"接近度"(即网络延迟)的最佳方法.不幸的是,我对低级网络不够熟悉,无法区分我可以使用的不同类型的请求.谷歌搜索没有提出任何测量来自Go的延迟的建议,一般的延迟技术似乎总是Linux二进制文件,我希望以更少的依赖关系的名义避免.有帮助吗?

另外,我注意到两个EC2实例之间的延迟应该是1ms.虽然我计划在EC2上使用该实现,但它可以假设在任何地方使用.延迟通常是如此糟糕,以至于我应该花费精力来确保两个节点的网络接近度?请记住,大多数Pastry请求可以在群集中服务器数量的日志库16中提供(因此,对于10,000个服务器,平均需要大约3个请求才能找到要搜索的密钥).例如,从EC2的亚太地区到EC2的美国东部地区的延迟是否足以证明在添加节点时增加的复杂性和延迟检查引入的开销?

latency amazon-ec2 go

3
推荐指数
1
解决办法
732
查看次数

用于 iOS 的 kAudioDevicePropertyBufferFrameSize 替换

我试图设置一个音频单元来呈现音乐(而不是音频队列……这对我的目的来说太不透明了……iOS 没有这个属性kAudioDevicePropertyBufferFrameSize……我知道如何导出这个值来设置)我的 IO 单元的缓冲区大小?

我发现这篇文章很有趣..它询问了使用kAudioSessionProperty_CurrentHardwareIOBufferDurationkAudioSessionProperty_CurrentHardwareOutputLatency音频会话属性的组合来确定该值的可能性..但没有答案..有什么想法吗?

latency core-audio audio-streaming ios

3
推荐指数
1
解决办法
2501
查看次数

按照 Google 的 Jeff Dean 的要求请求延迟

我正在观看 Jeff Dean 谈论延迟和缩放的视频 - https://www.youtube.com/watch?v=nK6daeTZGA8#t=515

在 00:07:34 标记处,他给出了这样的延迟示例 -

假设您有一堆服务器。他们对请求的平均响应时间为 10 毫秒。但是有 1% 的时间他们需要 1 秒或更长时间来响应。因此,如果您接触其中一台服务器,则 1% 的请求需要 1 秒或更长时间。接触其中的 100 个服务器,63% 的请求需要 1 秒或更长时间。

他是如何得出这个 63% 的数字的?这背后的逻辑/数学是什么?

math latency request response-time

3
推荐指数
1
解决办法
649
查看次数

cudaDeviceScheduleBlockingSync和cudaDeviceScheduleYield有什么区别?

如上所述:如何减少CUDA同步延迟/延迟

设备等待结果有两种方法:

  • "轮询" - 在旋转中刻录CPU - 在等待结果时减少延迟
  • "阻塞" - 线程正在休眠直到发生中断 - 以提高一般性能

对于"轮询"需要使用CudaDeviceScheduleSpin.

但对于"堵"是什么,我需要使用CudaDeviceScheduleYieldcudaDeviceScheduleBlockingSync

cudaDeviceScheduleBlockingSync和之间有什么区别cudaDeviceScheduleYield

cudaDeviceScheduleYield如下所示:http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/group__CUDART__DEVICE_g18074e885b4d89f5a0fe1beab589e0c8.html "指示CUDA 在等待设备结果时产生其线程.这可能会增加等待设备时的延迟,但可以提高与该设备并行执行工作的CPU线程的性能." - 即在旋转中没有刻录CPU的等待结果 - 即"阻塞".和cudaDeviceScheduleBlockingSync一样 - 等待结果没有刻录CPU旋转.但有什么区别?

concurrency cuda latency gpgpu synchronize

3
推荐指数
1
解决办法
1503
查看次数

为什么缓冲区应该在64字节边界上对齐以获得最佳性能?

这个示例程序中,我发现了这个注释:

/* Hardware delivers at most ef_vi_receive_buffer_len() bytes to each
 * buffer (default 1792), and for best performance buffers should be
 * aligned on a 64-byte boundary.  Also, RX DMA will not cross a 4K
 * boundary.  The I/O address space may be discontiguous at 4K boundaries.
 * So easiest thing to do is to make buffers always be 2K in size.
 */
#define PKT_BUF_SIZE         2048
Run Code Online (Sandbox Code Playgroud)

我很感兴趣为什么for best performance buffers should be aligned on a 64-byte boundary …

c++ memory-management latency

3
推荐指数
1
解决办法
1858
查看次数

AWS(ElastiCache)中的Redis高延迟

我试图确定在ElastiCache Redis节点(cache.m3.medium)上看到一些高延迟的原因。我使用redis-cli延迟测试收集了一些数据,并从与ElastiCache节点相同的区域/可用性区域中的EC2实例运行该数据。

我看到平均而言,延迟相当不错(〜.5ms),但离群值却很高。我不认为异常值是由于网络延迟造成的,因为两个EC2实例之间的网络ping测试不会表现出如此高的峰值。

Redis节点没有任何负载,并且指标看起来还不错。

我的问题是:

  1. 是什么导致最大最大延迟?
  2. 这些最大等待时间是预期的吗?
  3. 您还将使用其他哪些步骤/测试/工具来进一步诊断问题?

user@my-ec2-instance:~/redis-3.2.8$ ./src/redis-cli -h redis-host --latency-history -i 1
min: 0, max: 12, avg: 0.45 (96 samples) -- 1.01 seconds range
min: 0, max: 1, avg: 0.33 (96 samples) -- 1.00 seconds range
min: 0, max: 3, avg: 0.33 (96 samples) -- 1.01 seconds range
min: 0, max: 2, avg: 0.29 (96 samples) -- 1.01 seconds range
min: 0, max: 2, avg: 0.26 (96 samples) -- 1.01 seconds range
min: 0, …
Run Code Online (Sandbox Code Playgroud)

latency redis amazon-elasticache

3
推荐指数
1
解决办法
2912
查看次数