小编Voo*_*Voo的帖子

使用System.js的性能问题

我正在玩system.js(灵感来自angular2使用它作为他们的教程),但即使对于最琐碎的样本我也会得到可笑的糟糕表现.

例如,以下代码System.importapp.js本地运行时在第二个(前一个)和最后一个(中)console.log 之间有26000ms(!)的延迟(因此没有网络延迟)

index.html的:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>System.js Sample</title>
    <script>console.log("1: " + new Date().getTime());</script>
    <script src="bower_components/system.js/dist/system.js"></script>
</head>
<body>
<script>
    console.log('2: ' + new Date().getTime());
    System.import('app.js');
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

App.js:

console.log('3: ' + new Date().getTime());
Run Code Online (Sandbox Code Playgroud)

我通过bower安装了最新的system.js版本("system.js":"~0.18.17")并删除了所有剩余的代码,它实际上只是需要很长时间的System.import调用.那么我做错了什么?

在Chrome下加载页面时,"网络"标签的图片: 在此输入图像描述

javascript optimization performance systemjs

13
推荐指数
1
解决办法
894
查看次数

从C调用Py_Finalize()

这是从C++调用Python的后续内容

在程序启动时,我调用以下函数来初始化解释器:

void initPython(){
    PyEval_InitThreads();
    Py_Initialize();
    PyEval_ReleaseLock();
}
Run Code Online (Sandbox Code Playgroud)

每个线程都创建自己的数据结构并获取锁定:

PyGILState_STATE gstate;
gstate = PyGILState_Ensure();
//call python API, process results
PyGILState_Release(gstate);
Run Code Online (Sandbox Code Playgroud)

一旦你理解了GIL就会直截了当,但问题是我在调用Py_Finalize()时会遇到段错误.

void exitPython(){
    PyEval_AcquireLock();
    Py_Finalize();
}
Run Code Online (Sandbox Code Playgroud)

关于Py_Finalize()的引用是相当可疑的(或者我可能只是以错误的方式读取它)并且我不确定PyEval_AcquireLock()是否可以在有一些活动线程时获取锁定以及如果存在活动线程会发生什么当调用Py_Finalize()时.

无论如何,即使我确定所有线程都完成了他们的工作,但是只有至少创建了一个线程,我才会遇到段错误.例如,从exitPython()后面调用initPython()不会产生错误.

我可以忽略这个问题并希望操作系统知道它的作用,但我会优先考虑是否可以弄清楚发生了什么......

c c++ python

10
推荐指数
1
解决办法
3558
查看次数

访问unordered_map时的SIGFPE

我有一个unordered_map<Block, int>块是一个简单的结构定义如下:

struct Block {
    size_t start;
    size_t end;

    bool operator==(const Block& b) const {
        return start == b.start && end == b.end;
    }
};

namespace std {
template<>
struct hash<Block> {
    size_t operator()(const Block& b) const {
        return b.start;
    }
};
} 
Run Code Online (Sandbox Code Playgroud)

当试图访问地图时,我确实在gdb中收到以下错误消息(对于g ++ 4.7.1以及clang ++ 3.1都是如此):

Program received signal SIGFPE, Arithmetic exception.
0x0000000000401e0b in std::__detail::_Mod_range_hashing::operator() (this=0x7fffffffd8e0, __num=0, __den=0)
    at /usr/include/c++/4.7/bits/hashtable_policy.h:245
245     { return __num % __den; }
Run Code Online (Sandbox Code Playgroud)

我的libstdc ++版本是3.4.17(即GCC 4.7的版本)

相关回溯:

#0  0x0000000000401e0b in std::__detail::_Mod_range_hashing::operator() (this=0x7fffffffd8e0, …
Run Code Online (Sandbox Code Playgroud)

c++ gcc clang libstdc++

10
推荐指数
2
解决办法
3583
查看次数

反汇编原始x64机器代码

获取objdump以反汇编原始x64代码的正确架构是什么?你会认为-m x86-64应该通过阅读帮助来工作,但事实并非如此.我尝试了两个cygwin64版本:

$ objdump --version
GNU objdump (GNU Binutils) 2.23.52.20130604
Run Code Online (Sandbox Code Playgroud)

以及我的Fedora 18 x64 install(2.23.51.0.1-3.fc18 20120806)中的版本,但我只能得到can't use supplied machine x86-64.也试过amd64x64,但没有任何工作.

该命令基本上是 objdump -b binary -D -m ??? file

64-bit objdump disassembly

10
推荐指数
1
解决办法
5478
查看次数

写入数组中的不同偏移始终定义良好

这个问题中提出,同时写入char数组中的两个不同偏移量意味着数据竞争,因为某些处理器(如Alpha)没有字节寻址,因此很难实现这一点.

我当然看到这会大大减慢在alpha处理器上写入字节的速度(基本上涉及LL/SC),但据我了解C++标准,数组中的每个字段都是它自己的内存位置(尽管从阅读§1.7开始,我可以还将整个数组视为一个内存位置 - 这可能是这个问题归结为的原因).

所以基本上是以下伪代码

char arr[10]; // global field
Thread 1:
arr[1] = 0;
Thread 2:
arr[0] = 1;
Run Code Online (Sandbox Code Playgroud)

是否根据C++ 14标准明确定义?

c++ multithreading language-lawyer c++14

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

如何使用.NET Core 2.2创建框架相关的可执行文件

如何使用.NET Core 2.2创建框架相关的可执行文件(FDE)?MSDN文档在这里提到它们是.NET Core 2.2的一项新功能:

框架相关的可执行文件(FDE)

从.NET Core 2.2开始,您可以将应用程序以及所有必需的第三方依赖项部署为FDE。您的应用将使用目标系统上安装的.NET Core版本。

可悲的是,分步示例仍然仅涉及独立且依赖于框架的部署(FDD)。

c# .net-core .net-core-2.2

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

即使它截断文本,也要使QLabel缩小

即使它意味着截断其包含的文本,我怎样才能调整QLabel的大小?我有一个QLabel伸展Widget的整个水平空间.设置文本时,我确保它被正确截断,即获取其FontMetrics和Width并使用metrics.elidedText().

但是当用户调整窗口小部件的大小时,Label不允许它进一步缩小,因为它会截断其文本.

任何想法如何解决这个问题?我认为最简单的解决方案是以某种方式告诉QLabel总是缩小然后捕获resize事件并正确格式化文本 - 我只是不知道如何做第一部分(不同大小的策略没有帮助)

qt qt4 pyqt pyqt4

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

生成给定掩码的所有位模式

我的问题如下:我有一个值x和一个模式p两个相同大小的变量.目标是迭代未被 p掩盖的x的所有位模式.

例如:如果我们有p = 1001,我们想找到0000,0001,1000,和1001-不一定是按照这个顺序.

C99中的标准实现(返回值指定我们是否已经返回所有值):

static bool next(size_t val, size_t mask, size_t *out) {
    if (val == mask) {
        return false;
    }
    size_t current = val & mask;
    size_t inc = 1;
    size_t new_val = current + inc;
    while ((new_val & mask) <= current) {
        inc++;
        new_val = current + inc;
    }
    *out = new_val;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我认为应该有一些技巧可以提高效率,但我似乎无法找到任何重大改进(除了计算掩码的尾随零并适当设置inc的起始值,这不是很多一种提升).

编辑:同样重要的是,对于每个生成的值,会产生大量额外的工作,这意味着大量的重复项是不可能的(有些重复,即使不可识别也没关系,没有任何副作用完成的工作,只是一个减速).

c algorithm optimization bit-manipulation

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

SignalR Typenamehandling

我试图让SignalR使用自定义JsonSerializerSettings作为其有效载荷,特别是我试图设置TypeNameHandling = TypeNameHandling.Auto.

这个问题似乎是,该SignalR中使用的设置hubConnection.JsonSerializer,并GlobalHost.DependencyResolver.Resolve<JsonSerializer>()为它的内部数据结构以及它然后导致各种混乱的(内部服务器崩溃时,我设置TypeNameHandling.All为最粗鲁的例子,但TypeNameHandling.Auto我也得问题,特别是当IProgress<>回调涉及).

是否有任何解决方法或我只是做错了?

示例代码演示:

服务器:

class Program
{
    static void Main(string[] args)
    {
        using (WebApp.Start("http://localhost:8080"))
        {
            Console.ReadLine();
        }
    }
}

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var hubConfig = new HubConfiguration()
        {
            EnableDetailedErrors = true
        };
        GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), ConverterSettings.GetSerializer);
        app.MapSignalR(hubConfig);
    }
}

public interface IFoo
{
    string Val { get; set; }
}
public class Foo : IFoo
{
    public string Val { get; …
Run Code Online (Sandbox Code Playgroud)

c# json json.net .net-4.5 signalr

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

从C++调用Python

我正在尝试从我的主C++程序中调用Python脚本中的函数.python函数接受一个字符串作为参数并且不返回任何内容(ok ..'None').只要前一次调用在再次调用函数之前完成,它就可以很好地工作(从未想过会那么容易......),否则就会出现访问冲突pModule = PyImport_Import(pName).

有很多教程如何在C中嵌入python,反之亦然,但我没有发现任何关于这个问题.

int callPython(TCHAR* title){
    PyObject *pName, *pModule, *pFunc;
    PyObject *pArgs, *pValue;

Py_Initialize();
    pName = PyUnicode_FromString("Main");
    /* Name of Pythonfile */

    pModule = PyImport_Import(pName);
    Py_DECREF(pName);

if (pModule != NULL) {
        pFunc = PyObject_GetAttrString(pModule, "writeLyricToFile");
        /* function name. pFunc is a new reference */
        if (pFunc && PyCallable_Check(pFunc)) {
            pArgs = PyTuple_New(1);

    pValue = PyUnicode_FromWideChar(title, -1);

    if (!pValue) {
        Py_DECREF(pArgs);
                Py_DECREF(pModule);
        showErrorBox(_T("pValue is false"));
        return 1;
            }
    PyTuple_SetItem(pArgs, 0, pValue);

            pValue = PyObject_CallObject(pFunc, pArgs);
            Py_DECREF(pArgs);

            if …
Run Code Online (Sandbox Code Playgroud)

c c++ python

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