小编Bjö*_*lex的帖子

什么是冷/死场,什么是剥离优化?

C++/Java/Go/Scala(pdf)中的Loop Recognition论文中,我们在C++ Tunings一节中找到以下引用:

结构剥皮.结构UnionFindNode有3个冷场: type_,loop_,和header_.由于节点是在数组中分配的,因此这是剥离优化的理想选择.这三个字段可以剥离成一个单独的数组.请注意,该header_ 字段也已死亡 - 但删除它对性能影响非常小.结构中的name_字段BasicBlock也已死亡,但它很适合填充空间,因此不会被删除.

有些人可以向我解释一下冷/死区域是什么,剥离优化是什么(我理解作者在那里做了什么,但它背后的理由是什么)?

c++ optimization

15
推荐指数
2
解决办法
935
查看次数

找到给定数组中距离最长的元素,其中每个元素出现两次?

给定一个int数组,每个int在数组中恰好出现TWICE.找到并返回int,使得这对int在此数组中具有彼此之间的最大距离.

例如 [2, 1, 1, 3, 2, 3]

2: d = 5-1 = 4;
1: d = 3-2 = 1;
3: d = 6-4 = 2;
return 2
Run Code Online (Sandbox Code Playgroud)

我的想法:

使用hashmap,key是a[i],value是索引.扫描a[],将每个数字放入哈希值.如果数字被命中两次,请使用其索引减去旧数字索引,并使用结果更新哈希中的元素值.

之后,扫描哈希并返回具有最大元素(距离)的密钥.在时间和空间上都是O(n).

如何在O(n)时间和O(1)空间中进行?

c c++ algorithm data-structures

15
推荐指数
1
解决办法
1831
查看次数

如何在setup.py中处理对scipy的依赖

我正在尝试创建一个setup.py依赖于SciPy的项目.以下setup.py重现:

setup(
    name='test',
    version='0.1',
    install_requires=['scipy']
)
Run Code Online (Sandbox Code Playgroud)

使用python setup.py develop它安装时会生成以下错误:

ImportError: No module named numpy.distutils.core
Run Code Online (Sandbox Code Playgroud)

但是,当我安装scipy时pip,它是从一个轮子安装它,它工作得很好.

所以,我的问题是,我如何创建一个setup.py取决于SciPy?为什么不setuptools安装轮子的依赖?使用Python 3时这会更好吗(我们计划无论如何都要迁移,所以如果它在那里工作,我会等到迁移完成后).

我在Mac OS X 10.10.1上使用Python 2.7.8 setuptools3.6和pip1.5.6.

python setuptools scipy python-2.7

15
推荐指数
1
解决办法
2129
查看次数

OSGI服务与Singleton?

我是OSGI的初学者,我想知道是否有人可以告诉我创建OSGI服务与单例模式之间的区别.例如,假设我有一个core提供的bundle IService,以及需要访问它的多个bundle.我可以:

  1. core-bundle中注册服务,插件可以访问该服务
  2. 提供一个提供服务的单例类

使用OSGI服务似乎相当麻烦; 而且由于插件必须依赖于Core(要获得接口),使用OSGI服务有什么好处?

osgi

14
推荐指数
2
解决办法
7704
查看次数

由scipy-cluster生成的树形图没有显示

我正在使用scipy-cluster为某些数据生成层次聚类.作为应用程序的最后一步,我调用dendrogram函数绘制聚类.我使用内置的Python 2.6.1和这个matplotlib包在Mac OS X Snow Leopard上运行.程序运行正常,但最后Rocket Ship图标(据我所知,这是python中GUI应用程序的启动程序)显示并立即消失而不做任何事情.没有显示任何内容.如果我在通话后添加'raw_input',它就会永久地在停靠栏中上下跳动.如果我从终端运行matplotlib的简单示例应用程序,它运行正常.有没有人有这方面的经验?

python macos matplotlib dendrogram scipy

13
推荐指数
2
解决办法
7882
查看次数

Android C++ NDK

我正在尝试为android ndk编译以下内容

#include <jni.h>
#include <string.h>

extern "C" {
    JNIEXPORT jstring JNICALL Java_com_knucklegames_helloCpp_testFunction(JNIEnv * env, jobject obj);
};

JNIEXPORT jstring JNICALL Java_com_knucklegames_helloCpp_testFunction(JNIEnv *env, jobject obj) {
 return env->NewStringUTF(env, "Hello from native code!");
}
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误

Compile++ thumb: helloCpp <= /cygdrive/c/workspace/helloCpp/jni/main.cpp
/cygdrive/c/workspace/helloCpp/jni/main.cpp: In function '_jstring* Java_com_knucklegames_hello
Cpp_testFunction(JNIEnv*, _jobject*)':
/cygdrive/c/workspace/helloCpp/jni/main.cpp:10: error: no matching function for call to '_JNIEn
v::NewStringUTF(JNIEnv*&, const char [24])'
/cygdrive/d/android/android-ndk-r4b/build/platforms/android-8/arch-arm/usr/include/jni.h:839: note: candidates
 are: _jstring* _JNIEnv::NewStringUTF(const char*)
make: *** [/cygdrive/c/workspace/helloCpp/obj/local/armeabi/objs/helloCpp/main.o] Error 1
Run Code Online (Sandbox Code Playgroud)

c++ android android-ndk

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

在矢量:: push_back内存明智的情况下会发生什么?

我的问题是关于它的效果vector::push_back,我知道它在向量的末尾添加了一个元素但是在引擎盖下面会发生什么?

IIRC内存对象是按顺序方式分配的,所以我的问题是是否vector::push_back只是在向量之后立即分配更多内存,如果是这样,如果该位置没有足够的可用内存会发生什么?或者也许在"结束"中添加指针以使向量"跳"到它继续的位置?或者只是通过将其复制到另一个有足够空间且旧副本被丢弃的位置来重新分配?或者别的什么?

c++ vector push-back

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

boost :: variant如何存储引用?

以下代码编译并执行"正确的事情":

#include <boost/variant.hpp>
#include <iostream>

int main()
{
  int a = 10;
  boost::variant<int&, float&> x = a;
  a = 20;
  std::cout << boost::get<int&>(x) << "\n";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

boost :: variant如何存储引用?根据C++标准,如何存储引用完全取决于编译器.实际上,boost::variant甚至知道引用占用了多少字节?sizeof(T&) == sizeof(T),所以它不能使用sizeof()运算符.现在,我知道引用很可能是作为指针实现的,但是语言并不能保证.get<>当变体存储引用时,如何和访问工作的一个很好的解释获得额外的分数:)

c++ boost boost-variant

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

私有包清单标题有什么作用?

我所熟悉的Import-PackageExport-Package,但是这对我来说是一个新的.它有什么作用?

java osgi bnd

13
推荐指数
3
解决办法
4616
查看次数

有没有设计理由为什么std :: set没有前后成员函数?

  1. 我知道我可以使用*s.begin(),但可以使用相同的参数vector,其中有front/back
  2. 我常常使用set/map的ordered属性来获取"最小的"元素/键 - 事实上,这样做并不是拥有它的理由,只是一个例子:)

在这里,我说的是设计原因为什么front/ back将是糟糕的设计,所以请跳过委员会忘记它的明显原因......

c++ set

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