我正在编写一个生成一些Excel文档的脚本,我需要将一个数字转换为其等效的列名.例如:
1 => A
2 => B
27 => AA
28 => AB
14558 => UMX
Run Code Online (Sandbox Code Playgroud)
我已经编写了一个算法来做这个,但我想知道是否更简单或更快的方法:
function numberToColumnName($number){
$abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$abc_len = strlen($abc);
$result_len = 1; // how much characters the column's name will have
$pow = 0;
while( ( $pow += pow($abc_len, $result_len) ) < $number ){
$result_len++;
}
$result = "";
$next = false;
// add each character to the result...
for($i = 1; $i<=$result_len; $i++){
$index = ($number % $abc_len) - 1; // calculate the …Run Code Online (Sandbox Code Playgroud) 将NumPy数组随机分成训练和测试/验证数据集的好方法是什么?类似于Matlab中的函数cvpartition或crossvalind函数.
这两个功能在幕后做同样的事情吗?(在单一陈述函数中)
var evaluate = function(string) {
return eval('(' + string + ')');
}
var func = function(string) {
return (new Function( 'return (' + string + ')' )());
}
console.log(evaluate('2 + 1'));
console.log(func('2 + 1'));
Run Code Online (Sandbox Code Playgroud) 使用{}而不是字符串连接有什么好处吗?
来自slf4j的一个例子
logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
Run Code Online (Sandbox Code Playgroud)
代替
logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);
Run Code Online (Sandbox Code Playgroud)
我认为这是关于速度优化的,因为根据配置文件,可以在运行时避免参数评估(和字符串连接).但是只有两个参数是可能的,那么有时除了字符串连接之外别无选择.需要就此问题提出意见.
这段Haskell代码运行得慢得多-O,但-O应该是非危险的.谁能告诉我发生了什么?如果重要,它是尝试解决这个问题,它使用二进制搜索和持久段树:
import Control.Monad
import Data.Array
data Node =
Leaf Int -- value
| Branch Int Node Node -- sum, left child, right child
type NodeArray = Array Int Node
-- create an empty node with range [l, r)
create :: Int -> Int -> Node
create l r
| l + 1 == r = Leaf 0
| otherwise = Branch 0 (create l m) (create m r)
where m …Run Code Online (Sandbox Code Playgroud) 假设您要保留现有条目的地图.20%的情况下,您插入的条目是新数据.使用返回的迭代器执行std :: map :: find然后std :: map :: insert是否有优势?或者是否更快尝试插入然后根据迭代器是否指示记录是否插入来执行操作?
任何人都可以解释gdb的这种行为吗?
900 memset(&new_ckpt_info,'\0',sizeof(CKPT_INFO));
(gdb)
**903 prev_offset = cp_node->offset;**
(gdb)
**905 m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb->shm_addr.ckpt_addr+sizeof(CKPT_** HDR),i_offset);
(gdb)
**903 prev_offset = cp_node->offset;**
(gdb)
**905 m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb->shm_addr.ckpt_addr+sizeof(CKPT_ HDR),i_offset);**
(gdb)
**908 bitmap_offset = client_hdl/32;**
(gdb)
**910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);**
(gdb)
**908 bitmap_offset = client_hdl/32;**
(gdb)
**910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);**
(gdb)
**908 bitmap_offset = client_hdl/32;**
(gdb)
**910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);**
(gdb)
913 found = cpnd_find_exact_ckptinfo(cb , &ckpt_info , bitmap_offset , &offset , &prev_offset);
(gdb)
916 if(!found)
(gdb) p found
$1 = <value optimized out>
(gdb) set found=0 …Run Code Online (Sandbox Code Playgroud) 简介: 我用C#编写高性能代码.是的,我知道C++会给我更好的优化,但我仍然选择使用C#.我不想辩论这个选择.相反,我想听听那些像我一样试图在.NET Framework上编写高性能代码的人.
问题:
我想我知道: 原始的.NET JIT编译器不会内联涉及结构的任何内容.奇怪的给定结构只应该用于需要像内置函数那样优化的小值类型的情况,但是确实如此.幸运的是,在.NET 3.5SP1和.NET 2.0SP2中,他们对JIT Optimizer进行了一些改进,包括对内联的改进,特别是对于结构.(我猜他们这样做是因为否则他们引入的新的Complex结构会表现得非常糟糕......所以复杂团队可能会对JIT Optimizer团队产生影响.)因此,.NET 3.5 SP1之前的任何文档都可能是与这个问题不太相关.
我的测试显示: 我已经通过检查C:\ Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll文件的版本> = 3053来验证我有更新的JIT优化器,所以应该有这些改进到JIT优化器.然而,即便如此,我的拆卸时间和外观都表明:
用于传递具有两个双精度的结构的JIT生成的代码远不如直接传递两个双精度的代码有效.
与传递struct作为参数相比,JIT生成的struct方法代码传递'this'的效率要高得多.
如果你传递两个双打而不是传递一个带有两个双精度的结构,JIT仍然可以更好地内联,即使是由于明显在循环中的乘数.
时间: 实际上,看看反汇编,我意识到循环中的大部分时间只是从List中访问测试数据.如果分解循环的开销代码和访问数据,则进行相同调用的四种方法之间的差异会大不相同.对于PlusEqual(double,double)而不是PlusEqual(Element),我可以获得5倍到20倍的加速比.使用PlusEqual(double,double)代替运算符+ = 10x到40x.哇.伤心.
这是一组时间:
Populating List<Element> took 320ms.
The PlusEqual() method took 105ms.
The 'same' += operator took 131ms.
The 'same' -= operator took 139ms.
The PlusEqual(double, double) method took 68ms.
The do nothing loop took 66ms.
The ratio of operator with constructor to method is 124%.
The ratio of operator without constructor to …Run Code Online (Sandbox Code Playgroud) 正如标题所说,
一个典型的答案是:
允许任何和所有代码转换不会改变程序的可观察行为的规则
我们会不时地从某些实现中获取行为,这些行为归因于此规则.好多次错了.那么,这个规则究竟是什么呢.标准没有明确地将此规则作为一个部分或段落提及,那么究竟什么属于这条规则的范围?对我来说,这似乎是一个灰色区域,标准没有详细定义.有人可以根据标准的参考资料详细说明细节.
注意:将其标记为C和C++,因为它与两种语言都相关.
Stargazer为lm(和其他)物体生产非常漂亮的乳胶桌.假设我按最大可能性拟合模型.我希望观星者为我的估计生成一个类似于lm的表格.我怎样才能做到这一点?
虽然它有点hacky,但有一种方法可能是创建一个包含我的估计值的"假"lm对象 - 我认为只要summary(my.fake.lm.object)有效,它就会起作用.那容易行吗?
一个例子:
library(stargazer)
N <- 200
df <- data.frame(x=runif(N, 0, 50))
df$y <- 10 + 2 * df$x + 4 * rt(N, 4) # True params
plot(df$x, df$y)
model1 <- lm(y ~ x, data=df)
stargazer(model1, title="A Model") # I'd like to produce a similar table for the model below
ll <- function(params) {
## Log likelihood for y ~ x + student's t errors
params <- as.list(params)
return(sum(dt((df$y - params$const - params$beta*df$x) / params$scale, df=params$degrees.freedom, log=TRUE) - …Run Code Online (Sandbox Code Playgroud)