标签: processing-efficiency

只读取R中Stata .DTA文件的一部分

如果在某处有一个简单的答案,我会提前道歉.这似乎是那样的事情,但我似乎无法通过搜索SO或谷歌搜索在帮助文件中找到它.

我现在正在使用几个GB的数据集.它足以适应我有权访问的其中一个集群节点的内存,但需要花费相当多的时间来加载.对于使用此数据的许多调试/编程活动,我不需要加载整个文件,只需要在前几千个观察点上有一个数据集来测试代码.我当然可以只读取整个文件和子集,但我想知道是否有办法告诉read.dta()只读前N行?这当然要快得多.

我也可以使用像.csv这样的正确格式,然后使用read.csv()'s nrows参数,但是我会丢失Stata数据集中的因子标签(并且必须从其他人的代码中重新创建相当多的GB数据.这个项目.因此首选.dta文件的直接解决方案.

r processing-efficiency stata

9
推荐指数
2
解决办法
1689
查看次数

多个视频源合二为一

我正在寻找一种有效的方法来做到以下几点:

使用几个源视频(长度大致相同),我需要生成一个输出视频,该输出视频由各自在其自己的区域中运行的所有原始源组成(就像一堆不同大小的PIP).因此,最终结果是所有原件并排运行,每个原件都在自己的区域/盒子中.

源和输出需要flv和我使用的平台是Windows(Windows 7 64位开发,部署到Windows Server 2008).

我看过avisynth但不幸的是它无法处理flv和没有我试过的插件和flv分离器.

我当前的进程以下列方式使用ffmpeg:

  1. 使用ffmpeg为每个视频生成每秒25 png,根据需要调整原始大小.
  2. 使用System.Drawing命名空间将每组帧组合成一个新图像,从静态背景开始,然后将每个帧加载到一个Image并绘制到背景Graphics对象 - 这给了我组合的帧.
  3. 使用ffmpeg将生成的图像合并到视频中.

所有这些都是IO密集型(这是我目前的处理瓶颈),我觉得必须有一种更有效的方法来实现我的目标.我没有太多的视频处理经验,也不知道那里有什么选择.

有人能建议一种更有效的方法来处理这些吗?

c# ffmpeg video-processing processing-efficiency flash-video

9
推荐指数
1
解决办法
7789
查看次数

C++如何将已排序的向量合并到一个已排序的向量/弹出所有这些向量中的最小元素?

我有一个大约一百个排序的集合vector<int>虽然大多数向量中都有少量整数,但是一些向量包含大量(> 10K)它们(因此向量不一定具有相同的大小) ).

我想要做的基本上是遍历从最小到最大的整数,它们包含在所有这些排序的向量中.

一种方法是将所有这些排序的向量合并到一个有序向量中并简单地迭代.从而,

问题1:将排序后的向量合并为有序向量的最快方法是什么?

另一方面,我确信有更快/更聪明的方法来实现这一点,而无需合并和重新排序整个事物 - 也许从这个排序向量集合中迭代地弹出最小的整数; 没有合并它们..所以:

问题2:从一堆排序中弹出最少元素的禁区/最佳方法vector<int>是什么?


基于下面的回复,以及对问题的评论,我已经实现了一种方法,我为排序的向量建立了迭代器的优先级队列.我不确定这是否具有性能效率,但它似乎非常节省内存.我认为问题仍然存在,因为我不确定我们是否已经建立了最快的方式.

// compare vector pointers by integers pointed
struct cmp_seeds {
    bool operator () (const pair< vector<int>::iterator, vector<int>::iterator> p1, const pair< vector<int>::iterator, vector<int>::iterator> p2) const {
        return *(p1.first) >  *(p2.first);      
    }
};

int pq_heapsort_trial() {

    /* Set up the Sorted Vectors */ 
    int a1[] = { 2, 10, 100};
    int a2[] = { 5, 15, 90, 200};
    int a3[] = { 12 }; …
Run Code Online (Sandbox Code Playgroud)

c++ sorting mergesort vector processing-efficiency

9
推荐指数
1
解决办法
8463
查看次数

在C中做二进制算术的最佳方法是什么?

我正在学习C并编写一个简单的程序,它将假设每个二进制数为2个字符串值,并根据用户选择执行算术运算:

  • 添加两个值,
  • 从输入1减去输入2,或
  • 将这两个值相乘.

我的实现假设字符串中的每个字符都是一个二进制位,例如char bin5 = "0101";,但是一次解析字符串一个字符似乎太天真了.理想情况下,我希望直接使用二进制值.

在C中执行此操作的最有效方法是什么?有没有更好的方法将输入视为二进制值而不是scanf()从字符串中获取每个位?

我做了一些研究,但从初学者的角度来看,我没有找到任何明显更好的方法.任何建议,将不胜感激!

c math binary performance processing-efficiency

8
推荐指数
1
解决办法
3780
查看次数

逐行读取文件与读取整个文件时的性能

与一次读取整个文件相比,逐行读取时间(理论上)是否存在显着差异?

读取整个文件确实会对使用的内存量产生负面影响,但它的工作速度会更快吗?

我需要读取一个文件并处理每一行.我不知道我是否应该一次读取一行并处理它,或者读取整个文件,处理所有行,然后写入输出.

我已经设置了prgm逐行读取,我想知道是否值得努力改变它来读取整个文件(给我的设置不容易).

谢谢,

c++ performance qt processing-efficiency

7
推荐指数
1
解决办法
2619
查看次数

C中三个有效值的平均值

我们正在从引脚读取一些信号,并根据此读数设置更多事件.

为了安全起见,我想对引脚进行3次采样,比较三个值并使用最常见的值(即样本A为1,B为3,C为1,如果AB和C为全部,我想使用1 2然后使用2但是如果A是1,B是2而C是3,我想再次捕获三个样本).

目前我正在使用:

int getCAPValues (void)
{
//  Get three samples to check CAP signals are stable:  

        uint32_t x = (PORT->Group[IN_PORT_CAP].IN.reg & IN_PORT_CAP_MASK) >> IN_PORT_CAP_PIN;           // First set of CAP values
        for (uint32_t i = 0; i < 7; i++) dummy = i;                                                     // Pause
        uint32_t y = (PORT->Group[IN_PORT_CAP].IN.reg & IN_PORT_CAP_MASK) >> IN_PORT_CAP_PIN;           // second set
        for (uint32_t i = 0; i < 7; i++) dummy = i;                                                     // Pause
        uint32_t z = (PORT->Group[IN_PORT_CAP].IN.reg & IN_PORT_CAP_MASK) >> IN_PORT_CAP_PIN;           // …
Run Code Online (Sandbox Code Playgroud)

c processing-efficiency

7
推荐指数
1
解决办法
183
查看次数

高效的秒表

嗨,我正在编写一个javascript的秒表实用程序,我有一个关于效率和开销的问题.我有两种方法考虑制作秒表:

1.存储开始日期并不断测量自该日期以来的毫秒数.

2.创建一个整数并以设定的间隔递增其值.

我想知道哪个是最有效的.此外,我不确定选项#2是否会非常准确,如果有人对此有任何意见,那将是非常棒的.

javascript performance processing-efficiency

6
推荐指数
1
解决办法
489
查看次数

什么更有效,从文件中逐字读取或一次读取一行并使用C分割字符串?

我想在C中开发一个应用程序,我需要从磁盘上的文件中逐字检查.我被告知,从文件中读取一行然后将其拆分为单词会更有效,因为需要更少的文件访问.这是真的吗?

c file processing-efficiency

6
推荐指数
2
解决办法
318
查看次数

大规模文件共现分析

我有大约1000个文件.每个文件包含约20,000个文档.我还有一个大约1,000,000个单词的列表.

我想计算每个单词与其他单词出现的时间.因此,有一个大小为1M X 1M的稀疏矩阵.

为了加快计算速度,我通过执行以下操作分别处理每个文件:

1-我机器中的每个核心都在处理单个文件并输出以下格式的文件

WordId1 WordId2 Frequency 
Run Code Online (Sandbox Code Playgroud)

2-完成每个文件后,我将1000文件合并为一个文件.

这是我目前的方法,但这需要很长时间才能完成,我认为应该有更有效的方法来做到这一点,所以欢迎你的意见.

java performance multithreading processing-efficiency

6
推荐指数
1
解决办法
1021
查看次数

高效代码:VB.Net中的短整数数据类型

我正在编写一个性能非常关键的应用程序.对于x64 CPU最有效的数据类型,我有点困惑.

MDSN表示"在某些情况下,公共语言运行库可以将Short变量紧密组合在一起并节省内存消耗." 而且"整数数据类型在32位处理器上提供最佳性能"

我正在使用大量数据(在锯齿状数组中平均大约500万个值[10或更多] [30] [128,128])来实时生成位图(数据值的热图).所有数据点都是200到3500之间的整数,所以我可以使用short或integer.哪个效率最高?

谢谢.

vb.net performance integer short processing-efficiency

6
推荐指数
1
解决办法
1097
查看次数