我最近写了一个简短的算法来计算python中的快乐数字.该程序允许您选择一个上限,它将确定它下面的所有快乐数字.为了进行速度比较,我决定将我所知道的算法从python直接翻译成c ++.
令人惊讶的是,c ++版本的运行速度明显慢于python版本.在发现前10,000个满意数字的执行时间之间进行准确的速度测试表明python程序平均在0.59秒内运行,而c ++版本平均在8.5秒内运行.
我将这个速度差异归结为我必须在c ++版本中编写部分计算的辅助函数(例如,确定元素是否在列表/数组/向量中),这些函数已经内置到python语言中.
首先,这是否是这种荒谬的速度差异的真正原因,其次,如何更改c ++版本以比python版本更快地执行(在我看来应该如此).
带有速度测试的两段代码在这里:Python Version,C++ Version.谢谢您的帮助.
#include <iostream>
#include <vector>
#include <string>
#include <ctime>
#include <windows.h>
using namespace std;
bool inVector(int inQuestion, vector<int> known);
int sum(vector<int> given);
int pow(int given, int power);
void calcMain(int upperBound);
int main()
{
while(true)
{
int upperBound;
cout << "Pick an upper bound: ";
cin >> upperBound;
long start, end;
start = GetTickCount();
calcMain(upperBound);
end = GetTickCount();
double seconds = (double)(end-start) / 1000.0; …Run Code Online (Sandbox Code Playgroud) 我必须在滚动框的 TScrollBox 上使用 TScrollbar(是的,这似乎是个坏主意,但我必须这样做)。
这就是我所做的:我在盒子上添加了滚动,使用顶部和底部锚点使其保持在轨道上,并在 ScrollBar 的 OnScroll 事件中添加了以下代码:
procedure TForm1.ScrollBar1Scroll(Sender: TObject;
ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
ScrollBox1.ScrollBy(0,-scrollPos);
end;
Run Code Online (Sandbox Code Playgroud)
无法正常滚动,总是向下滚动,如何让它正常滚动?
编辑:请不要建议使用 TScrollBox 中的栏,我必须使用 TScrollBar。
谢谢你!
即使我提供PUT和DELETE的替代品(参见"低REST"),如何为从浏览器访问我的Web服务的用户提供用户友好的表单验证,同时仍然暴露RESTful URI?表单验证问题(如下所述)是我当前的问题,但我想问的更广泛的问题是:如果我试图同时提供RESTful公共接口和非JavaScript HTML界面,那么它是否会让生活更轻松或更难?他们一起玩吗?
从理论上讲,它应该仅仅是改变输出格式的问题.机器可以查询URL"/ people",并获取XML列表.人类用户可以将他们的浏览器指向相同的URL,并获得漂亮的HTML响应.(我正在使用微格式wiki中的URL示例,这看起来相当合理).
通过对"/ people"URL的POST请求来创建新的人员资源.为此,人类用户可以首先访问"/ people/new",它返回用于创建资源的静态HTML表单.表单有method = POST和action ="/ people".如果用户的输入有效,这将正常工作,但如果我们在服务器端进行验证并发现错误怎么办?友好的事情是返回表单,填充用户刚输入的数据,加上错误消息,以便他们可以解决问题并重新提交.但是我们无法将输出直接从POST返回到"/ people",或者它会破坏我们的URL系统,如果我们将用户重定向回"/ people/new"表单,则无法报告错误和重新填充表单(除非我们将数据存储到会话状态,这将更少RESTful).
使用javascript,事情会容易得多.只需在后台执行POST,如果失败,则在表单顶部显示错误.但是当javascript支持不可用时,我希望应用程序优雅地降级.目前,我得出的结论是,一个非平凡的Web应用程序无法在没有javascript的情况下实现HTML界面,并使用传统的RESTful URL方案(例如微格式wiki上描述的方案).如果我错了,请告诉我!
Stack Overflow上的相关问题(两者都不涉及表单验证):
[解决了]
所以我决定尝试创建一个排序的双向链接跳过列表...
我很确定我很清楚它是如何工作的.当您插入x时,程序会在基本列表中搜索放置x的适当位置(因为它已排序),(概念上)翻转一个硬币,如果"硬币"落在a上,那么该元素将被添加到上面的列表中(或者创建一个包含元素的新列表),链接到它下面的元素,再次翻转硬币,等等.如果"硬币"随时落在b上,则插入结束.您还必须在每个列表中存储-infinite作为起点,以便无法插入小于起点的值(意味着永远无法找到它).
要搜索x,您可以从"左上角"(最高列表最低值)开始,然后"向右移动"到下一个元素.如果值小于x,则继续下一个元素等,直到"走得太远"并且值大于x.在这种情况下,您将返回到最后一个元素并向下移动一个级别,继续此链,直到您找到x或x从未找到.
要删除x,您只需搜索x并在每次出现在列表中时将其删除.
现在,我只想制作一个存储数字的跳过列表.我认为STL中没有任何东西可以帮助我,所以我需要创建一个包含整数值的类List,它具有成员函数,搜索,删除和插入.
我遇到的问题是处理链接.我很确定我可以用一个指向前一个元素和前面元素的指针来创建一个处理"水平"链接的类,但是我不知道如何处理"垂直"链接(指向相应的元素)在其他名单?)
如果我的逻辑有任何缺陷请告诉我,但我的主要问题是:
编辑:我已经开始编写一些代码,我正在考虑如何处理List构造函数....我猜测它的构造,"-infinite"值应存储在vectorname [0]元素中,我可以只需在创建后调用insert就可以将x放在适当的位置.
我试图创建一个正则表达式来识别 英文数字,如一个,19,20,122,等等,一直到上百万.我想重用正则表达式的一些部分,因此正则表达式是由部分构造的,如下所示:
// replace <TAG> with the content of the variable
ONE_DIGIT = (?:one|two|three|four|five|six|seven|eight|nine)
TEEN = (?:ten|eleven|twelve|(?:thir|for|fif|six|seven|eigh|nine)teen)
TWO_DIGITS = (?:(?:twen|thir|for|fif|six|seven|eigh|nine)ty(?:\s+<ONE_DIGIT>)?|<TEEN>)
// HUNDREDS, et cetera
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人已经做过同样的事情(并希望分享),因为这些正则表达式很长,而且他们可能有他们不应该做的事情,或者我可能会遗漏的事情.此外,我希望它们尽可能高效,所以我期待任何优化提示.我正在使用Java正则表达式引擎,但任何正则表达式都是可以接受的.
我正在尝试设置Zend Framework和Doctrine.
之前有与ZF 1.8的讨论
该讨论没有考虑AutoLoader/Bootstrap系统.
如果我使用./zh.sh生成应用程序框架,我将如何整合Doctrine.
在桌面应用程序中,我需要使用简单的信息存储患者姓名的"数据库",以后可以搜索.我预计平均约有1,000名患者.每个患者也必须与测试结果相关联,尽管这些可以/将与患者本身分开存储.
数据库是最好的解决方案,还是过度杀伤?通常,我们只会根据患者的姓/名或身份证号码进行搜索.所有数据都将与应用程序一起存储,而不是在其外部共享.
有关保持所有此类数据组织的最佳方法的任何建议吗?存储单独的测试数据的方法在不使用数据库时似乎让我感到困惑,同时保持与患者的链接.
考虑到我的头脑,List<Patient>我可以想象几个LINQ命令使搜索变得轻而易举,虽然列出了1,000到10,000名患者,但我不确定是否有任何性能问题.
我有以下一段代码
NSMutableArray *mutArray = [[NSMutableArray alloc] init];
[mutArray addObject: [NSProcessInfo processInfo]];
[mutArray addObject: @"This is NSString Object"];
[mutArray addObject: [[NSMutableString alloc] initWithString: @"1st Mutable String"]];
for (id element in mutArray){
NSLog(@" ");
NSLog(@"Class Name: %@", [element className]);
NSLog(@"Is Member of NSString: %@", ([element class] isMemberOfClass: [NSString class]) ? YES: NO);
NSLog(@"Is kind of NSString: %@", ([element class] isKindOfClass: [NSString class]) ? YES: NO);
}
Run Code Online (Sandbox Code Playgroud)
我正在得到以下输出(并期望指出)
Class Name: NSProcessInfo
Is Member of NSString: NO
Is Kind of NSString: NO
Class Name: …Run Code Online (Sandbox Code Playgroud) 如何编写正则表达式以匹配,
a string which does not contain the underscore "_".