我有一个应用程序,每秒更新一次变量大约5到50次,我正在寻找一种实时绘制这种变化的连续XY图的方法.
虽然不建议将JFreeChart用于如此高的更新率,但许多用户仍然认为它适用于它们.我已经尝试使用这个演示并修改它以显示一个随机变量,但似乎一直使用100%的CPU使用率.即使我忽略了这一点,我也不希望被限制在JFreeChart的ui类来构造表单(尽管我不确定它的功能是什么).是否可以将其与Java的"表单"和下拉菜单集成?(如VB中所示)否则,我有什么其他选择吗?
编辑:我是Swing的新手,所以我把一个代码放在一起只是为了测试JFreeChart的功能(同时避免使用JFree的ApplicationFrame类,因为我不确定它如何适用于Swing的组合盒子和按钮).现在,图表正在立即更新,CPU使用率很高.是否可以使用新的Millisecond()缓冲该值并将其更新为每秒两次?另外,我可以在不中断JFreeChart的情况下将其他组件添加到JFrame的其余部分吗?我该怎么办?frame.getContentPane().add(new Button("Click"))似乎覆盖了图形.
package graphtest;
import java.util.Random;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
public class Main {
static TimeSeries ts = new TimeSeries("data", Millisecond.class);
public static void main(String[] args) throws InterruptedException {
gen myGen = new gen();
new Thread(myGen).start();
TimeSeriesCollection dataset = new TimeSeriesCollection(ts);
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"GraphTest",
"Time",
"Value",
dataset,
true,
true,
false
);
final XYPlot plot = chart.getXYPlot();
ValueAxis axis = …Run Code Online (Sandbox Code Playgroud) 有人知道如何修复此警告消息吗?
07-14 10:38:55.411 V/tracker-audiotest(22426):录制Thread :: run():启动audioRecord录制.07-14 10:45:51.490"W/AudioTrack(607):由于采样率不匹配(44100 vs 48000),客户拒绝了AUDIO_OUTPUT_FLAG_FAST"
当我在Android 4.4上测试音频延迟时,在看到此警告消息后,我突然出现延迟增加.但是我在测试期间没有改变采样率,初始设置是48kHz.录制开始7分钟后会出现此警告消息.
如果需要,您可以在设备上测试此项目.该项目位于GitHub:
我需要一种非常准确的方法来计算我的程序的一部分.我可以使用常规的高分辨率时钟,但这将返回挂钟时间,这不是我需要的:我需要花时间只运行我的进程.
我清楚地记得看到一个Linux内核补丁,它允许我将我的进程计时到纳秒精度,除了我忘了给它添加书签,我也忘记了补丁的名称:(.
我记得它是如何工作的:
在每个上下文切换时,它将读出高分辨率时钟的值,并将最后两个值的增量添加到正在运行的进程的处理时间.这样可以生成过程实际处理时间的高分辨率精确视图.
使用常规时钟保持常规处理时间,我相信毫秒精确(1000Hz),这对我来说太大了.
有谁知道我在说什么内核补丁?我还记得它就像一个带有字母的字母在它之前或之后 - 像'rtimer'之类的东西,但我记不清楚了.
(也欢迎其他建议)
Marko建议的完全公平调度程序不是我想要的,但看起来很有希望.我遇到的问题是,我可以用来获取处理时间的调用仍然没有返回足够精细的值.
所以现在我可能遇到的问题是内核有我需要的信息,我只是不知道将返回它的系统调用.
我已经开发了一种调度算法,它提供了概率的软实时保证,但它看起来太新而且简单明了.虽然我把它与已发布的实时调度算法(EDF,零星服务器等)联系起来很困难.以下调度算法是否为已知的实时算法?
假设:
保证:
算法:
我没有听到关于RTOS的好消息 - 它们让程序员更好地控制调度程序,以便例如避免优先级倒置,它们的时序更加一致,更好的多任务处理.但是所有标准桌面设置都使用非实时操作系统.因此,使用RTOS必须有一些权衡,它们是什么?
我希望了解如何构建一个允许多个用户在其计算机上同步观看同一YouTube视频的网络应用.例如,synchtube.com或watch2gether.com
我正在寻找一个简单的方法,可以使用通用的技术,如来实现PHP,jQuery而Apache.我目前正在考虑轮询(或彗星长轮询,但这需要更复杂的服务器设置,我希望避免),类似于Ajax聊天应用程序的实现方式 - 客户端不断检查服务器以查看哪个视频是播放.但是,我怀疑这里会出现延迟问题,因此视频不会完全同步.我还想不出更好的方法.
对于开发人员社区,对方法或代码片段的任何帮助都非常感谢!
我试图描述Linux上的计时器抖动.我的任务是运行100毫秒的计时器,看看这些数字是如何运作的.
我正在研究多核机器.我使用了setitimer()的标准用户程序,以root身份运行,然后使用处理器亲和性,最后使用处理器亲和性和进程优先级.然后我使用PREEMPT_RT内核运行相同的内容,然后使用clock_nanosleep()运行示例,如PREEMPT_RT页面上的演示代码中所示.在所有运行中,计时器性能非常相似,尽管有变化,但没有真正的差异.
我们的最终目标是稳定的计时器.我经常得到的最好的最坏情况是大约200us.所有案例的直方图都显示出奇怪的行为.首先,我不希望计时器提前开火.但他们这样做.正如您在直方图中看到的那样,我在0偏移的两边都得到了低谷.这些在第二个图中的三个波段中可见.在第一个图中,X轴以微秒为单位.在第二个图中,Y轴以微秒为单位.
我跑了30s测试(即300个计时器事件)100次以生成一些数字.您可以在下图中看到它们.200us大幅下降.所有30000定时器事件时钟偏移都在第二个图表中绘制,您可以在其中看到一些异常值.


所以问题是,之前有其他人做过这种分析吗?你有没有看到同样的行为?我的假设是RT内核可以帮助重载系统,但在我们的例子中,它无助于消除定时器抖动.那是你的经历吗?
这是代码.就像我之前说过的,我修改了使用clock_nanosleep()函数的PREEMPT_RT站点上的示例代码,因此我不会包含我的最小更改.
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <stdlib.h>
#define US_PER_SEC 1000000
#define WAIT_TIME 100000
#define MAX_COUNTER 300
int counter = 0;
long long last_time = 0;
static long long times[MAX_COUNTER];
int i = 0;
struct sigaction sa;
void timer_handler(int signum)
{
if (counter > MAX_COUNTER)
{
sigaction(SIGALRM, &sa, NULL);
for (i = 0; i < MAX_COUNTER; i++)
{
printf("%ld\n", times[i]);
}
exit(EXIT_SUCCESS);
}
struct timeval t;
gettimeofday(&t, NULL);
long long elapsed = …Run Code Online (Sandbox Code Playgroud) 我理解优先级继承是什么.我也理解,从Mars Pathfinder的系统重置问题来看,大多数情况下,根据操作的重要性,启用/实现优先级继承是好的.
但是,是否存在不希望优先级继承的情况,如果启用/实现可能会导致问题?如果是这样,你能提供一个例子,最好是描述一个问题吗?
我正在阅读http://olk.github.io/libs/fiber/doc/html/在我看来,使用Boost.Fiber C++正在接近Erlang拥有数千个"进程"的能力,也被称为"绿色"进程[threads]" http://en.wikipedia.org/wiki/Green_threads.
我的问题是,是Boost.Fiber为生产做好准备,还有现在 ç有更好的文档和示例++的替代品?有人提到轻量级线程,但我似乎无法找到它的引用.最后一个问题是,为什么C++标准不包括Fibers?
我对此感兴趣的原因是因为我有实时更新,其中值更改可能会影响(产生)数百个/小型的小型但令人尴尬的并行计算.imo,C++线程模型不能很好地工作.请不要使用GPU,因为它目前需要很长时间才能将信息传输到GPU或从GPU传输信息.
我意识到Erlang远不止这个,所以请不要在一般情况下教我Erlang vs C++.
real-time ×10
linux ×2
scheduling ×2
ajax ×1
algorithm ×1
audio ×1
boost ×1
c ×1
c++11 ×1
erlang ×1
fiber ×1
graph ×1
java ×1
jfreechart ×1
jquery ×1
low-latency ×1
php ×1
preempt-rt ×1
process ×1
server-push ×1
timer ×1
timing ×1
websocket ×1
youtube ×1