使用Rstudio,我试图使用View()命令显示dataFrame.该命令自动将输出发送到"源"象限.
有没有办法将它发送到"工作区"quandrant或"Files,Plots ......"象限?这是我的代码:
qRows <- data.frame( RowQuery = character(0), "BackTest P&L" = character(0), stringsAsFactors=FALSE)
qRows[nrow(qRows) + 1, ] <- c("@sp500(vwpc) | rsi(30) | qcume", "12%")
View(qRows)
Run Code Online (Sandbox Code Playgroud) 经过大量搜索c中并行快速排序的实现后,我即将潜入并自己编写代码.(我需要对一个大约100万个文本字符串的数组进行排序.)似乎我发现的所有实现都将qsort函数本身的工作分开,这在分割每个线程相对少量的工作时会产生大量的开销.
将100万个字符串除以线程数(在我的情况下是24个线程)并将它们分别放在一个节上,然后进行合并输出会不会快得多?当然,这具有理论上的缺点,即它不是就地排序,但是随着可用内存的大量存在,这不是问题.运行的机器有12个(非常快)物理/ 24逻辑核心和192 GB(是,千兆字节)的内存.目前,即使在这台机器上,排序也需要大约8分钟!
我试图找出如何在C中对多维数据(5维)进行排序.我知道使用5d数组是一个解决方案,通过阅读关于此主题的其他帖子,许多人发现,如果不是完全不道德的,那么美学上令人厌恶,以便引发不断的抛射物呕吐...所以我提前道歉.
基本上我有一组传入的数据,我必须应用一系列离散算法.每个算法都有一组变量,我需要计算每个算法效率的排名,每个变量的排列都是可能的.最终,我需要一个按最差到最差的算法排序的列表.整个计算是动态的,因此对于一个传入的数据最有效的方法不太可能是另一个数据的最佳表现者......所以我无法消除任何变量,因为它们表现不佳.
以下是数据的外观:
dataValue[ algo ][ lengthVar ][ durationVar ][ plasticityVar ] [ fungibilityVar]
Run Code Online (Sandbox Code Playgroud)
有:
除了按算法排序之外,我还希望能够灵活地对5个维度中的任何维度进行排序.
这将使用VS 2010 C(非C++)在具有192 gig(非meg)RAM的12个物理/ 24逻辑核心机器上运行.
我假设qsort将是最有效的排序选项.我已经广泛搜索谷歌和SO如何做到这一点无济于事.有1d数组的答案,PHP或C#中的多维数组等,但不适用于C ...或者至少我找不到一个.
在VS2010中,如何从光标位置删除直到行尾.我曾经读过这样的捷径,但现在找不到了.
我需要将大量数据读入缓冲区(大约20gig).我有192GB的非常快的DDram可用,所以没有内存大小的问题.但是,我发现以下代码进入缓冲区的速度越来越慢.Visual C分析器告诉我,12分钟执行时间的68%是在myFunc()循环内的2个语句中.我在一个非常快的dell上运行win7,64bit,每个有2个cpu,每个有6个物理内核(24个逻辑内核),所有24个内核在运行时都完全超出了.
#define TREAM_COUNT 9000
#define ARRAY_SIZE ONE_BILLION
#define offSet(a,b,c,d) ( ((size_t) ARRAY_SIZE * (a)) + ((size_t) TREAM_COUNT * 800 * (b)) + ((size_t) 800 * (c)) + (d) )
void myFunc(int dogex, int ptxIndex, int xtreamIndex, int carIndex)
{
short *ptx = (short *) calloc(ARRAY_SIZE * 20, sizeof(short));
#pragma omp parallel for
for (int bIndex = 0; bIndex < 800; ++bIndex)
doWork(dogex, ptxIndex, carIndex);
}
void doWork(int dogex, int ptxIndex, int carIndex)
{
for (int treamIndex = 0; treamIndex …Run Code Online (Sandbox Code Playgroud) 使用C,在Linux下运行,我试图弄清楚如何让2个不同的进程访问位于NFSv4文件系统上的同一个文件.具体来说,我想让一个程序打开一个文件进行读取,然后让第二个程序打开该文件进行写入.我打算使用AWS的新EFS(弹性文件系统),而EFS只是NFSv4.
程序的性质使得作者本质上只会附加到文件中.在作者完成并调用fflush之前,读者永远不会访问新添加的信息.
NFSv4是否支持这种情况?
或者是否有更好的方法来实现这种并发NFSv4文件访问?
我的MacBookPro,运行BootCamp,有一个Intel i7-640M处理器,有2个内核.与所有其他i7芯片一样,每个内核都是超线程的,因此最多可以有4个线程.使用Visual Studio 2010 c/c ++确定这些:
coresAvailable = omp_get_num_procs ( );
threadsAvailable = omp_get_max_threads ( ) ;
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,"threadsAvailable"返回值为4.但"coresAvailable"也被报道为4.
我错过了什么?
我有一个C应用程序(VStudio 2010,win7 64位)在具有双xeon芯片的机器上运行,意味着12个物理核心和24个逻辑核心,以及192 gig的ram.编辑:操作系统是win7(即Windows 7,64位).
该应用程序有24个线程(每个线程都有自己的逻辑核心)进行计算并填充大规模C结构的不同部分.当所有线程都完成(并且线程完全平衡以便它们同时完成)时,结构大约为60千兆字节.
(我可以控制硬件设置,因此我将使用运行RAID 0的6个2tb驱动器,这意味着写入时的物理限制大约是平均顺序写入速度的6倍,或大约2千兆克/秒.)
将此更新到磁盘的最有效方法是什么?显然,i/o时间会使计算时间相形见绌.根据我对这个主题的研究,看起来像write()(而不是fwrite())是要走的路.但是,在设置缓冲区大小等方面,我可以在软件方面进行哪些其他优化?mmap会更有效吗?
我在Visual C中有一个大的switch语句,大约250个案例:
#define BOP -42
#define COP -823
#define MOP -5759
int getScarFieldValue(int id, int ivIndex, int rayIndex, int scarIndex, int reamIndex)
{
int returnValue = INT_MAX;
switch (id)
{
case BOP : returnValue = Scar[ivIndex][rayIndex].bop[scarIndex][reamIndex]; break;
case COP : returnValue = Scar[ivIndex][rayIndex].cop[scarIndex][reamIndex]; break;
case MOP : returnValue = Scar[ivIndex][rayIndex].mop[scarIndex][reamIndex]; break;
.....
default: return(INT_MAX);
}
}
Run Code Online (Sandbox Code Playgroud)
你会注意到#defines有一个很大的范围,从-1到-10,000.事情是狗慢,我想知道花几个小时重新定义这250个定义到更窄(甚至连续)的范围可以加快速度.我一直认为编译器会以一种使其数值无关的方式处理案例值,但我无法找到任何讨论来验证/使该假设无效.
我的 R 程序按预期工作。它显示了一个包含我的数据帧的表,并让我编辑这些值。
如何捕获这些值并将它们保存到我的数据帧或我的数据帧的副本?
require(shiny)
library(rhandsontable)
DF = data.frame(val = 1:10, bool = TRUE, big = LETTERS[1:10],
small = letters[1:10],
dt = seq(from = Sys.Date(), by = "days", length.out = 10),
stringsAsFactors = F)
rhandsontable(DF, rowHeaders = NULL)
Run Code Online (Sandbox Code Playgroud)
编辑:上面的代码生成一个包含行和列的表。我可以编辑任何行和列。但是当我查看我的数据框时,这些编辑不会出现。我想弄清楚的是我需要更改什么才能捕获已编辑的新值。