示例代码:
for x in range(2, n):
if n % x == 0:
print n, 'equals', x, '*', n/x
break
else:
# loop fell through without finding a factor
print n, 'is a prime number'
Run Code Online (Sandbox Code Playgroud)
在Java中,我需要编写更多代码来实现相同的行为:
finishedForLoop = true;
for (int x : rangeListOfIntegers){
if (n % x == 0)
{
//syso: Some printing here
finishedForLoop = false
break;
}
}
if (finishedForLoop == true){
//syso: Some printing here
}
Run Code Online (Sandbox Code Playgroud)
在Java中有没有更好的类似于Python for else循环的实现?
我在这里阅读了很多关于堆栈溢出的帖子比较子字符串搜索的性能(例如Python字符串搜索效率, 这是搜索子字符串的最有效方法吗?, python中的子字符串等等)
我还看了一下包含abstract.c的源代码实现.
据我所知,内置实现是迭代的:python docs
python是否有更多足够的技术来实现查找子字符串:Boyer-Moore算法, Rabin-Karp算法等...... ???
编辑
问题已经扩展: Python:通过嵌入复杂的算法改进子字符串搜索.
我正在寻找一种更有效的方法来总结给定字符串中所有字符的ASCII值,只使用标准的python(最好是2.7).
目前我有:
print sum(ord(ch) for ch in text)
Run Code Online (Sandbox Code Playgroud)
我想强调一下,这个问题的主要焦点和方面就是我上面写的内容.
以下是这个问题的一个不那么重要的方面,应该这样对待:
那我为什么要问呢?!我已经比较了这种方法与嵌入一个简单的C代码函数,它使用PyInline 在这里做同样的事情,而且看起来简单的C嵌入函数快17倍.
如果没有比我建议的更快的Python方法(仅使用标准的Python),那么Python开发人员没有在核心中添加这样的实现似乎很奇怪.
建议答案的当前结果.在我的Windows 7,i-7,Python 2.7上:
text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
sum(ord(ch) for ch in text)
>> 0.00521324663262
sum(array.array("B", text))
>> 0.0010040770317
sum(map(ord, text ))
>> 0.00427160369234
sum(bytearray(text))
>> 0.000864669402933
C-code embedded:
>> 0.000272828426841
Run Code Online (Sandbox Code Playgroud) 我试图in
在(C)Python源代码中找到内置运算符的实现.我在内置函数源代码bltinmodule.c中搜索过,但是找不到这个运算符的实现.我在哪里可以找到这个实现?
我的目标是通过扩展此搜索的不同C实现来改进Python中的子字符串搜索,尽管我不确定Python是否已经使用了我的想法.
我的问题可能很简单,
我有一个Result
内部领域,制定者和吸气剂的课程.
此外,我有Special1Result
一个扩展的类,Result
包括几个字段和Special2Result
一些更多的数据.
在不同的课程中Dispatcher
,我写了以下方法:
processResults(List<? extends Result> results)
,这只是熟悉Result
(我需要这个方法来查询扩展的Result对象中是否有特定的字段 - 我正在使用注释).
所以我决定使用扩展for-each循环: for (Result res : results) {}
那么我的问题是什么?我试图通过网络找到如何写这个for循环的扩展对象,例如像这样的东西for (? extends Results res: results){}
可能吗?写它的正确方法怎么样?
我的问题由两部分组成.
这是一个阳光下的虫子,有补丁还是我需要自己写一个memalign.
另外我有一个结构(不是我的代码):
typedef struct CLHLockStruct {
volatile CLHLockNode CACHE_ALIGN *Tail ;
volatile CLHLockNode CACHE_ALIGN *MyNode[N_THREADS] ;
volatile CLHLockNode CACHE_ALIGN *MyPred[N_THREADS] ;
} CLHLockStruct;
Run Code Online (Sandbox Code Playgroud)我在MVSC下编译(visual studio 2008):
CACHE_LINE_SIZE = 64
CACHE_ALIGN = __declspec(align(CACHE_LINE_SIZE))
N_THREADS = 8
sizeof(CLHLockStruct)=192
Run Code Online (Sandbox Code Playgroud)
该代码最初是为sparc架构编写的,我尝试将其迁移到MVSC而无需更改代码.
在他们的代码中他们使用memalign(CACHE_LINE_SIZE,sizeof(CLHLockStruct)),并且我已将其更改为_aligned_malloc,我的问题是sizeof(CLHLockStruct)不是2的幂,我可能会写一些函数找到下一个数字是2的力量.
他们是更好的方法吗?
EDIT1
我如何填充这个结构,使其大小为2的幂?
EDIT2
是否有一个像_aligned_malloc和malloc一样的函数:返回一个与block_size的倍数对齐的内存指针,但不要求字节为2的幂?
我的数据库设计包括多个MYISAM表,在线收集测量数据,
每行记录包含自动递增的id,一些数据和表示unixtime的整数.
我正在设计一个老化机制,我有兴趣使用MySQL分区动态地基于unixtime对每个这样的表进行分区.
假设我感兴趣的是每个分区将代表单个月的数据,最后一个分区应该代表2个月,如果记录到达下一个未表示的月份,代表2个月的分区应该重新组织以代表单个月,并且新分区应该创建代表2个月(1个从最后一个分区获取,1个用于将来的测量),
此外,当创建新分区时,我感兴趣的是将丢弃最旧的分区.
更新12.12.12
我找到了有趣的链接到类似的方法,我已经描述了你的魔法范围分区维护查询.
我有一个由 MYISAM 表组成的数据库模式,我有兴趣不时从某些表中删除旧记录。
我知道删除不会回收内存空间,但正如我在 DELETE 命令的描述中发现的那样,插入可能会重用删除的空间
在 MyISAM 表中,删除的行保存在链表中,后续的 INSERT 操作会重用旧的行位置。
我对 LOAD DATA 命令是否也重用已删除的空间感兴趣?
更新
我也有兴趣如何回收索引空间?
更新 2012-12-03 23:11
根据从@RolandoMySQLDBA 收到的答案提供的更多信息
执行以下建议的查询后,对于需要重用或回收空间的不同表,我得到了不同的结果:
SELECT row_format FROM information_schema.tables
WHERE table_schema='mydb' AND table_name='mytable1';
Run Code Online (Sandbox Code Playgroud)
> Dynamic
SELECT row_format FROM information_schema.tables
WHERE table_schema='mydb' AND table_name='mytable2';
Run Code Online (Sandbox Code Playgroud)
> Fixed
更新 2012-12-09 08:06
LOAD DATA
当且仅当行格式是固定的或(行格式是动态的并且有一个大小完全相同的已删除行)时,do 重用以前删除的空间(我已经通过运行一个简短的脚本进行了检查)。
好像如果row_format是动态的,就对每条记录进行完整的删除列表查找,如果没有找到确切的行大小,则不使用删除的记录,表内存使用量会增加,另外LOAD DATA
还会需要更多时间来导入记录。
我会排除这里给出的答案,因为它完美地描述了所有过程。
我仍然试图摆脱元编程,我很难过.
我想做的是创建一个类/ struct/whatever,为它提供一个std :: tuple并让它根据元组中的对象类型自动生成成员函数.目标是让类派生自MessageHandler
例如
typedef std::tuple< MessageA, MessageB, MessageC > MessageSet;
template< class T >
class MessageHandler
{
// some magic metaprogramming would "create"...
virtual void processMsg( const MessageA& ) = 0;
virtual void processMsg( const MessageB& ) = 0;
virtual void processMsg( const MessageC& ) = 0;
};
Run Code Online (Sandbox Code Playgroud)
我已经读过你不能在模板中使用虚函数,但我不知道C++ 11是否仍然如此.
谢谢.
c++ templates virtual-functions variadic-templates iterable-unpacking
我正在寻找一个有效的正则表达式(最好是所有格),我可以用来从大文件(5Gb)中只包含一个分隔符(',')的行:
例如
X,Y
X1,Y1,Y2
X3,Y3
X4,Y4
X5,Y5,Z6
Run Code Online (Sandbox Code Playgroud)
>>> grep"???" big_file
X,Y
X3,Y3
X4,Y4
Run Code Online (Sandbox Code Playgroud) python ×4
algorithm ×2
c ×2
c++ ×2
java ×2
mysql ×2
string ×2
architecture ×1
ascii ×1
bigdata ×1
cpython ×1
dynamic ×1
for-loop ×1
foreach ×1
g++ ×1
grep ×1
if-statement ×1
myisam ×1
partitioning ×1
performance ×1
polymorphism ×1
python-2.7 ×1
regex ×1
substring ×1
templates ×1