标签: optimization

获取数字的类似Excel的列名的算法

我正在编写一个生成一些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)

php algorithm optimization

86
推荐指数
6
解决办法
5万
查看次数

如何将数据集拆分/分区为训练和测试数据集,例如交叉验证?

将NumPy数组随机分成训练和测试/验证数据集的好方法是什么?类似于Matlab中的函数cvpartitioncrossvalind函数.

python arrays optimization numpy

86
推荐指数
5
解决办法
14万
查看次数

eval()和新的Function()是一样的吗?

这两个功能在幕后做同样的事情吗?(在单一陈述函数中)

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)

javascript optimization eval function

86
推荐指数
3
解决办法
4万
查看次数

Logger slf4j使用{}而不是字符串连接格式化的优点

使用{}而不是字符串连接有什么好处吗?

来自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)

我认为这是关于速度优化的,因为根据配置文件,可以在运行时避免参数评估(和字符串连接).但是只有两个参数是可能的,那么有时除了字符串连接之外别无选择.需要就此问题提出意见.

optimization logging concatenation string-formatting slf4j

86
推荐指数
3
解决办法
8万
查看次数

为什么这个Haskell代码用-O运行得慢?

这段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)

optimization haskell ghc compiler-bug

86
推荐指数
1
解决办法
2841
查看次数

std :: map insert或std :: map find?

假设您要保留现有条目的地图.20%的情况下,您插入的条目是新数据.使用返回的迭代器执行std :: map :: find然后std :: map :: insert是否有优势?或者是否更快尝试插入然后根据迭代器是否指示记录是否插入来执行操作?

c++ optimization stl stdmap

85
推荐指数
4
解决办法
7万
查看次数

为什么GDB在行之间无法预测地跳转并将变量打印为"<value optimized out>"?

任何人都可以解释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 compiler-construction optimization gdb compilation

83
推荐指数
7
解决办法
10万
查看次数

为什么运算符比方法调用慢得多?(结构在较旧的JIT上较慢)

简介: 我用C#编写高性能代码.是的,我知道C++会给我更好的优化,但我仍然选择使用C#.我不想辩论这个选择.相反,我想听听那些像我一样试图在.NET Framework上编写高性能代码的人.

问题:

  • 为什么下面的代码中的运算符比等效的方法调用慢?
  • 为什么在下面的代码中传递两个双精度的方法比传递一个内部有两个双精度的结构的等效方法更快?(答:较旧的JIT优化结构很差)
  • 有没有办法让.NET JIT编译器像结构的成员一样有效地处理简单的结构?(答:获得更新的JIT)

我想我知道: 原始的.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)

.net c# optimization performance jit

83
推荐指数
3
解决办法
2570
查看次数

究竟什么是"假设"规则?

正如标题所说,

究竟什么是"假设"规则?

一个典型的答案是:

允许任何和所有代码转换不会改变程序的可观察行为的规则

我们会不时地从某些实现中获取行为,这些行为归因于此规则.好多次错了.那么,这个规则究竟是什么呢.标准没有明确地将此规则作为一个部分或段落提及,那么究竟什么属于这条规则的范围?对我来说,这似乎是一个灰色区域,标准没有详细定义.有人可以根据标准的参考资料详细说明细节.

注意:将其标记为C和C++,因为它与两种语言都相关.

c c++ optimization c++-faq as-if

83
推荐指数
2
解决办法
7359
查看次数

获得通过最大似然估计的系数到星形表中

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)

optimization r lm stargazer

83
推荐指数
1
解决办法
2521
查看次数