寻找与Mechanize for .NET类似的东西......
如果您不知道Mechanize是什么.. http://search.cpan.org/dist/WWW-Mechanize/
我会在这里保留一份建议清单.用于浏览/发布/屏幕抓取的任何内容(除了WebRequest和WebBrowser控件).
解析
Web应用程序测试
WatiN - Web应用程序测试框架(.NET) - http://watin.sourceforge.net/
Selenium - http://seleniumhq.org/
测试设计画布的艺术 - 花钱
工具
注意
WatiN接近我正在寻找的东西,除了它打开一个浏览器,这是令人讨厌和令人敬畏的同时.取决于你在做什么.
我的模板中有以下内容.
{% block content %}
{% for album in albumsList %}
{% if fotosList %}
<div class="photoalbum-wrapper">
<h3>{{ album.title }}</h3>
<ul class="photoalbum">
{% for foto in fotosList %}<li>item</li>{% endfor %}
</ul>
{% if fotosList|length > 4 %}
<a href="#" class="trigger">?????? <span>▼</span></a>
{% endif %}
</div>
{% endif %}
{% endfor %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
它引发了TemplateDoesNotExist:500.html.
如果我写{{ fotoList|length }}得很简单就行了.
一个非常聪明的工作人员告诉我,尝试不抛出的捕获会影响拥有数百万用户的网站的性能.基于发布的单元测试表明性能相同,我想知道这是否与操作系统级别和/或Web服务器特定情况有关.例如,Web服务器的异步工作实现发生在子进程而不是线程上.
谁知道?
我想看到的是一个php profiler的输出,显示实际使用的cpu时间.
jmucchiello对php中try-catch性能的评论很有意思,但不测量使用的cpu时间.
谢谢,大卫
我将不得不使用SQL Server的BULK INSERT命令重写一些相当旧的代码,因为架构已经改变,而且我想到也许我应该考虑用TVP切换到存储过程,但我想知道是什么影响它可能有性能.
一些背景信息可能有助于解释我为什么问这个问题:
数据实际上是通过Web服务提供的.Web服务将文本文件写入数据库服务器上的共享文件夹,该文件夹依次执行BULK INSERT.这个过程最初是在SQL Server 2000上实现的,当时除了INSERT在服务器上丢失几百个语句之外别无选择,这实际上是原始进程并且是性能灾难.
将数据批量插入永久登台表,然后合并到更大的表中(之后将其从登台表中删除).
要插入的数据量是"大",但不是"巨大的" - 通常是几百行,在极少数情况下可能是5-10k行.因此,我的直觉是,BULK INSERT作为一个非记录操作不会产生那么大的差异(但当然我不确定,因此问题).
插入实际上是一个更大的流水线批处理过程的一部分,需要连续多次发生; 因此性能是至关重要的.
我想BULK INSERT用TVP 取代的原因是:
在NetBIOS上编写文本文件可能已经花费了一些时间,而且从架构的角度来看它非常可怕.
我相信可以(而且应该)消除临时表.它的主要原因是插入的数据需要在插入的同时用于其他几个更新,并且尝试从大量生产表进行更新比使用几乎空的分段更加昂贵表.使用TVP,参数基本上是临时表,我可以在主插入之前/之后用它做任何我想做的事情.
我几乎可以废除欺骗检查,清理代码以及与批量插入相关的所有开销.
如果服务器同时获得一些这些事务,我们无需担心登台表或tempdb上的锁争用(我们尽量避免它,但它会发生).
在将任何内容投入生产之前,我显然会对此进行分析,但我认为在我花费所有时间之前首先询问周围可能是一个好主意,看看是否有任何人有关于为此目的使用TVP的任何严厉警告.
那么 - 对于那些对SQL Server 2008足够惬意的人来说,或者至少已经对此进行了调查,那么判决是什么?对于插入,比方说,几百到几千行,经常发生,TVP切割芥末?与批量插入相比,性能是否存在显着差异?
(又名:测试结果)
最终的结果是在感觉像36阶段部署过程之后的生产中.两种解决方案都经过了广泛测试
SqlBulkCopy直接使用该类;只是让读者可以得到一个想法是什么确切地进行了测试,以消除任何怀疑这个数据的可靠性,这里是什么这个导入过程更详细的解释实际上做:
从时间数据序列开始,通常约为20-50个数据点(尽管有时可能会达到几百个);
做一大堆疯狂的处理,主要是独立于数据库.该过程是并行化的,因此(1)中的大约8-10个序列同时被处理.每个并行过程生成3个附加序列.
取所有3个序列和原始序列并将它们组合成一批.
将所有8-10个现已完成的加工任务的批次合并为一个大型超级批次.
使用BULK INSERT策略(请参阅下一步)或TVP策略(跳至步骤8)导入.
使用SqlBulkCopy该类将整个超级批处理转储到4个永久临时表中.
运行存储过程,(a)对其中两个表执行一系列聚合步骤,包括几个JOIN条件,然后(b)MERGE使用聚合和非聚合数据执行6个生产表.(成品)
要么
生成DataTable包含要合并的数据的4个对象; 其中3个包含CLR类型,遗憾的是ADO.NET TVP不能正确支持它们,因此必须将它们作为字符串表示形式推入,这会对性能造成一定影响.
将TVP馈送到存储过程,该过程基本上与(7)进行相同的处理,但是直接与接收的表一起进行.(成品)
结果相当接近,但TVP方法最终平均表现更好,即使数据少量超过1000行. …
performance bulkinsert sql-server-2008 table-valued-parameters
M-x describe-mode在.el文件中执行a 时,我注意到Emacs-Lisp模式实际上完成了代码.但是,lisp-complete-symbol必然会M-TAB.在Windows中,Windows使用此键绑定来切换活动窗口.大多数IDE都在使用C-SPC,但这也是在Emacs中使用的.代码完成的一个好的,相当常见的键绑定是什么?
我想知道我是否可以假设在相同的64位浮点数上的相同操作在任何现代PC和大多数常见编程语言中给出完全相同的结果?(C++,Java,C#等).我们可以假设,我们正在对数字进行操作,结果也是一个数字(没有NaN,INF等等).
我知道使用浮点数(IEEE 854-1987和IEEE 754-2008)有两种非常类似的计算标准.但是我不知道它在实践中是怎么回事.
假设我在C++中有一个函数,我在其中使用指向其内存地址的指针来调用它typedef.现在,我怎样才能在Delphi中做同样的事情?
例如:
typedef void (*function_t)(char *format, ...);
function_t Function;
Function = (function_t)0x00477123;
Run Code Online (Sandbox Code Playgroud)
然后,我可以用:Function("string", etc);.
在Delphi中,有没有办法在不使用汇编指令的情况下执行此操作?
请注意,它是一个可变参数函数.
我正在使用jquery选项卡并遵循js方法,如何以及如何修改它以维护回发之间的tab状态?(这会在page_load之后将制表符重置为第一个制表符)
$(document).ready(function() {
//When page loads...
$(".tab_content").hide(); //Hide all content
$("ul.tabs li:first").addClass("active").show(); //Activate first tab
$(".tab_content:first").show(); //Show first tab content
//On Click Event
$("ul.tabs li").click(function() {
$("ul.tabs li").removeClass("active"); //Remove any "active" class
$(this).addClass("active"); //Add "active" class to selected tab
$(".tab_content").hide(); //Hide all tab content
var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content
$(activeTab).fadeIn(); //Fade in the active ID content
return false;
});
Run Code Online (Sandbox Code Playgroud) 如何根据普通语音中的使用频率随机生成字母?
任何伪代码都很受欢迎,但Java中的实现会非常棒.否则只是朝正确的方向戳一下会很有帮助.
注意:我不需要生成使用频率 - 我确信我可以很容易地查看它.
我在后台页面中使用监听器来了解加载选项卡的时间:
chrome.tabs.onUpdated.addListener(function (tabId) { })
Run Code Online (Sandbox Code Playgroud)
但是监听器被解雇了两次:当页面开始加载时,以及页面何时完成.是否有办法区分这两种情况?
performance ×2
.net ×1
64-bit ×1
algorithm ×1
asp.net ×1
bulkinsert ×1
c# ×1
comparison ×1
delphi ×1
elisp ×1
emacs ×1
filter ×1
ieee-754 ×1
java ×1
javascript ×1
jquery ×1
jquery-ui ×1
login ×1
mechanize ×1
php ×1
portability ×1
pseudocode ×1
random ×1
typedef ×1