标签: built-in

gcc原子内置物是如此之慢是否正常?

我有一个应用程序,我必须在多线程方法中增加一些统计计数器.递增必须是线程安全的,所以我决定使用gcc atomic builtins __sync_add_and_fetch()函数.为了了解它们的影响,我做了一些简单的性能测试,发现这些函数比简单的前/后递增慢得多.

这是我创建的测试程序:

#include <iostream>
#include <pthread.h>
#include <time.h>

using namespace std;

uint64_t diffTimes(struct timespec &start, struct timespec &end)
{
  if(start.tv_sec == end.tv_sec)
  {
    return end.tv_nsec - start.tv_nsec;
  }
  else if(start.tv_sec < end.tv_sec)
  {
    uint64_t nsecs = (end.tv_sec - start.tv_sec) * 1000000000;
    return nsecs + end.tv_nsec - start.tv_nsec;
  }
  else
  {
    // this is actually an error
    return 0;
  }
}

void outputResult(const char *msg, struct timespec &start, struct timespec &end, uint32_t numIterations, uint64_t val)
{
  uint64_t …
Run Code Online (Sandbox Code Playgroud)

c++ performance gcc atomic built-in

8
推荐指数
2
解决办法
8242
查看次数

如果在使用read时未使用新行char(\n)终止,则尊重最后一行

我注意到有一段时间,read如果没有文件的最后一行,那么它最后就不会读取一个"换行符".如果考虑到这一点,这是可以理解的,只要文件中没有"换行"字符,就好像它包含0行(这很难承认!).例如,请参阅以下内容:

$ echo 'foo' > bar ; wc -l bar
1 bar
Run Code Online (Sandbox Code Playgroud)

但...

$ echo -n 'bar' > foo ; wc -l foo
0 foo
Run Code Online (Sandbox Code Playgroud)

那么问题是:当我使用read处理尚未由我自己创建或修改的文件时,如何处理这种情况,以及我不知道它们是否真的以"换行符"结尾?

bash shell built-in

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

os.path.join()如何工作?

请帮我理解内置的os.path.join()函数是如何工作的.例如:

import os
print os.path.join('cat','dog') # 'cat/dog' no surprise here
print os.path.join('cat','dog').join('fish') # 'fcat/dogicat/dogscat/dogh'
Run Code Online (Sandbox Code Playgroud)

在Mac上(我猜Linux也是)os.name是posixpath的别名.所以查看posixpath.py模块,join()函数如下所示:

def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded.  An empty last part will result in a path that
ends with a separator."""
path = a
for b in p:
    if b.startswith('/'):
        path = b
    elif path == '' or path.endswith('/'):
        path +=  b
    else:
        path += …
Run Code Online (Sandbox Code Playgroud)

python macos path built-in

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

没有cd命令的手册页

Ubuntu Linux 15.10 - 我刚注意到没有手册页 cd

这看起来有点奇怪.

我试过了:

man cd
Run Code Online (Sandbox Code Playgroud)

在cmd线,我回来了

No manual entry for cd
Run Code Online (Sandbox Code Playgroud)

我试图找到文档

cd -
Run Code Online (Sandbox Code Playgroud)

这对于在最后一个目录和当前目录之间翻转非常方便

cd --

这似乎是别名

cd ~
Run Code Online (Sandbox Code Playgroud)

我在这里遗漏了一些非常明显的东西,或者手册页应该存在吗?

linux shell command built-in ubuntu-15.10

8
推荐指数
2
解决办法
6083
查看次数

为什么我可以从'eval'调用'print'

代码:

#!/usr/bin/python

src = """
print '!!!'
import os
"""

obj = compile(src, '', 'exec')
eval(obj, {'__builtins__': False})
Run Code Online (Sandbox Code Playgroud)

我得到输出:

!!!
Traceback (most recent call last):
  File "./test.py", line 9, in <module>
    eval(obj, {'__builtins__': False})
  File "", line 3, in <module>

ImportError: __import__ not found
Run Code Online (Sandbox Code Playgroud)

'print'和'import'都是语言结构.为什么'eval'限制使用'import'但不限制'print'?

PS我正在使用python 2.6

更新:问题不是"为什么导入不起作用?" 但"为什么印刷工作?" 是否有一些架构限制或其他?

python printing import eval built-in

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

是否有内置的python来创建多个列表中的元组?

是否有一个内置的python与一组列表的tupler相同,或类似的东西:

def tupler(arg1, *args):
    length = min([len(arg1)]+[len(x) for x in args])
    out = []
    for i in range(length):
        out.append(tuple([x[i] for x in [arg1]+args]))
    return out
Run Code Online (Sandbox Code Playgroud)

所以,例如:

tupler([1,2,3,4],[5,6,7])
Run Code Online (Sandbox Code Playgroud)

收益:

[(1,5),(2,6),(3,7)]
Run Code Online (Sandbox Code Playgroud)

或者也许有适当的pythony方式这样做,还是有类似的发电机???

python transpose built-in list-manipulation

7
推荐指数
2
解决办法
1194
查看次数

可装载的Bash内置

我正在写一个strcmp bash内置.编译很好,但是当我尝试启用它时,我得到:

$ enable -f ./strcmp strcmp
bash: enable: cannot open shared object ./strcmp: ./strcmp: only ET_DYN and ET_EXEC can be loaded
Run Code Online (Sandbox Code Playgroud)

我内置的重要部分:

strcmp_builtin (list)
WORD_LIST *list;

char *strcmp_doc[] = {
    (char *)NULL
};

struct builtin strcmp_struct = {
    "strcmp", /* builtin name */
    strcmp_builtin, /* function implementing the builtin */
    BUILTIN_ENABLED, /* initial flags for builtin */
    strcmp_doc, /* array of long documentation strings. */
    "strcmp 'string 1' 'string 2'", /* usage synopsis; becomes short_doc */
    0 /* reserved …
Run Code Online (Sandbox Code Playgroud)

c bash built-in strcmp

7
推荐指数
2
解决办法
3678
查看次数

如何查看默认zsh设置(HISTSIZE,SAVEHIST,...)

如何查看所有zsh设置的当前值?

例如,我目前没有设置HISTSIZE和SAVEHIST,所以env | grep HISTset | grep HIST没有显示任何内容.那么我如何才能看到正在使用的默认值?

default zsh environment-variables built-in

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

使用PHP内置的ltrim()删除单个字符

有一种简单的方法可以ltrim()用来删除匹配的单个实例而不是所有匹配吗?

我循环遍历字符串数组,我想删除第一个,也就是第一个匹配(在这种情况下是元音):

ltrim($value, "aeiouyAEIOUY");
Run Code Online (Sandbox Code Playgroud)

默认行为是字符串aardvarkAardvark将被修剪为"rdvark".我想要结果"ardvark".

我不会以任何方式使用ltrim,但它似乎是最接近的内置PHP函数.这将是很好的,ltrimrtrim有一个可选参数"限制",只是说...... :)

php string function built-in

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

如何在pycharm中查看python内置函数的执行情况?

当我尝试在 PyCharm 中查看内置函数 all() 时,我只能在函数体中看到“pass”。如何查看实际的实现以便我可以知道内置函数到底在做什么?

def all(*args, **kwargs): # real signature unknown
    """
    Return True if bool(x) is True for all values x in the iterable.

    If the iterable is empty, return True.
    """
    pass
Run Code Online (Sandbox Code Playgroud)

python function built-in pycharm

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