我写了一些代码来测试try-catch的影响,但看到了一些令人惊讶的结果.
static void Main(string[] args)
{
Thread.CurrentThread.Priority = ThreadPriority.Highest;
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
long start = 0, stop = 0, elapsed = 0;
double avg = 0.0;
long temp = Fibo(1);
for (int i = 1; i < 100000000; i++)
{
start = Stopwatch.GetTimestamp();
temp = Fibo(100);
stop = Stopwatch.GetTimestamp();
elapsed = stop - start;
avg = avg + ((double)elapsed - avg) / i;
}
Console.WriteLine("Elapsed: " + avg);
Console.ReadKey();
}
static long Fibo(int n)
{
long n1 = 0, n2 …Run Code Online (Sandbox Code Playgroud) 许多用户都将其作为切换到Pytorch的原因,但是我还没有找到牺牲/最渴望的实用质量,速度和执行力的理由/解释。
以下是代码基准测试性能,即TF1与TF2的对比-TF1的运行速度提高了47%至276%。
我的问题是:在图形或硬件级别上,什么导致如此显着的下降?
寻找详细的答案-已经熟悉广泛的概念。相关的Git
规格:CUDA 10.0.130,cuDNN 7.4.2,Python 3.7.4,Windows 10,GTX 1070
基准测试结果:

UPDATE:禁用每下面的代码不会急于执行没有帮助。但是,该行为是不一致的:有时以图形方式运行有很大帮助,而其他时候其运行速度相对于Eager 慢。
由于TF开发人员没有出现在任何地方,因此我将自己进行调查-可以跟踪相关的Github问题的进展。
更新2:分享大量实验结果,并附有解释;应该在今天完成。
基准代码:
# use tensorflow.keras... to benchmark tf.keras; used GPU for all above benchmarks
from keras.layers import Input, Dense, LSTM, Bidirectional, Conv1D
from keras.layers import Flatten, Dropout
from keras.models import Model
from keras.optimizers import Adam
import keras.backend as K
import numpy as np
from time import time
batch_shape = (32, 400, 16) …Run Code Online (Sandbox Code Playgroud) 我们想用jmeter.
我已经按照http://jmeter.apache.org/usermanual/get-started.html用户手册中的说明下载了生产版本.
但是我如何开始并安装软件?
我不知道java,我找不到任何关于我应该如何处理下载的说明.
我在Mac上.
如何将产品安装为可用程序?
此问题似乎只影响 Chrome/V8,在 Firefox 或其他浏览器中可能无法重现。总之,如果在其他任何地方使用新回调调用函数,则函数回调的执行时间会增加一个数量级或更多。
test(callback)任意多次调用都按预期工作,但是一旦调用test(differentCallback),test无论提供什么回调,函数的执行时间都会显着增加(即,另一个调用test(callback)也会受到影响)。
此示例已更新为使用参数,以免优化为空循环。回调参数a和b相加并添加到total记录的 中。
function test(callback) {
let start = performance.now(),
total = 0;
// add callback result to total
for (let i = 0; i < 1e6; i++)
total += callback(i, i + 1);
console.log(`took ${(performance.now() - start).toFixed(2)}ms | total: ${total}`);
}
let callback1 = (a, b) => a + b,
callback2 = (a, b) => a + b;
console.log('FIRST …Run Code Online (Sandbox Code Playgroud)我正在尝试确定实体框架比存储过程慢多少.我希望说服我的老板让我们使用Entity Framework来简化开发.
问题是我进行了性能测试,看起来EF比Stored Procs慢大约7倍.我觉得这很难相信,我想知道我是否遗漏了什么.这是一个确凿的测试吗?有什么办法可以提高EF测试的性能吗?
var queries = 10000;
// Stored Proc Test
Stopwatch spStopwatch = new Stopwatch();
spStopwatch.Start();
for (int i = 0; i < queries; i++ )
{
using (var sqlConn = new SlxDbConnection().Connection)
{
var cmd = new SqlCommand("uspSearchPerformanceTest", sqlConn) { CommandType = CommandType.StoredProcedure };
cmd.Parameters.AddWithValue("@searchText", "gstrader");
sqlConn.Open();
SqlDataReader dr = cmd.ExecuteReader();
List<User> users = new List<User>();
while (dr.Read())
{
users.Add(new User
{
IsAnonymous = Convert.ToBoolean(dr["IsAnonymous"]),
LastActivityDate = Convert.ToDateTime(dr["LastActivityDate"]),
LoweredUserName = dr["LoweredUserName"].ToString(),
MobileAlias = dr["MobileAlias"].ToString(),
UserId = new …Run Code Online (Sandbox Code Playgroud) stored-procedures entity-framework performance-testing database-performance
我需要测试我们的系统是否每秒可以执行N个请求.从技术上讲,它是对一个API的2个请求,对另一个API的2个请求,以及对第三个请求的6个请求.但重要的是它们应该同时发生 - 每秒10个请求.因此,在JMeter中我创建了三个线程组,首先定义了线程数1,并且加速时间为0.第二个线程组是相同的,第三个线程组定义了线程数6和加速时间0.但是这并不能保证它每秒运行它们 如何模仿它?我如何看待结果 - 如果它能够执行或不执行?
谢谢!
我想在Java应用程序上进行一些计时测试.这就是我目前正在做的事情:
long startTime = System.currentTimeMillis();
doSomething();
long finishTime = System.currentTimeMillis();
System.out.println("That took: " + (finishTime - startTime) + " ms");
Run Code Online (Sandbox Code Playgroud)
像这样的性能测试有什么"错误"吗?什么是更好的方法?
重复:秒表基准可以接受吗?
在上周,我创建了两个课程,我的团队对他们的表现表达了一些担忧.为了评估我的代码,我编写了一些简单的JUnit测试,这些测试通过构建丰富的测试数据集来运行这些类,然后通过相关方法为数千次迭代提供数据.我记录了每次迭代的运行时间,然后使用循环和记录了高,低和平均时间System.nanoTime().最后我让JUnit断言高和平均时间都在可接受的范围内.这种测试方法让我的团队对此代码充满信心.
JUnit是以这种方式测试性能的合适工具吗?是否有更好的工具来测试单元(方法和类)级别的性能?
为什么不能使用流利的语言string?
例如:
var x = "asdf1234";
var y = new string(x.TakeWhile(char.IsLetter).ToArray());
Run Code Online (Sandbox Code Playgroud)
是不是有更好的转换IEnumerable<char>方式string?
这是我做的一个测试:
class Program
{
static string input = "asdf1234";
static void Main()
{
Console.WriteLine("1000 times:");
RunTest(1000, input);
Console.WriteLine("10000 times:");
RunTest(10000,input);
Console.WriteLine("100000 times:");
RunTest(100000, input);
Console.WriteLine("100000 times:");
RunTest(100000, "ffff57467");
Console.ReadKey();
}
static void RunTest( int times, string input)
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < times; i++)
{
string output = new string(input.TakeWhile(char.IsLetter).ToArray());
}
sw.Stop();
var …Run Code Online (Sandbox Code Playgroud) 我有一个用Scala编写的小脚本,用于加载具有100,000,000个样本记录的MongoDB实例.我们的想法是让数据库全部加载,然后进行一些性能测试(并在必要时调整/重新加载).
问题是每100,000个记录的加载时间相当线性增加.在我的加载过程开始时,只需4秒即可加载这些记录.现在,在接近6,000,000条记录中,加载相同数量(100,000)需要300到400秒!那要慢两个数量级!查询仍然很快,但按照这个速度,我永远无法加载我想要的数据量.
如果我用我的所有记录(全部100,000,000!)编写一个文件,然后使用mongoimport导入整个文件,这会更快吗?或者我的期望是否过高而且我使用的数据库超出了应该处理的范围?
有什么想法吗?谢谢!
这是我的脚本:
import java.util.Date
import com.mongodb.casbah.Imports._
import com.mongodb.casbah.commons.MongoDBObject
object MongoPopulateTest {
val ONE_HUNDRED_THOUSAND = 100000
val ONE_MILLION = ONE_HUNDRED_THOUSAND * 10
val random = new scala.util.Random(12345)
val connection = MongoConnection()
val db = connection("mongoVolumeTest")
val collection = db("testData")
val INDEX_KEYS = List("A", "G", "E", "F")
def main(args: Array[String]) {
populateCoacs(ONE_MILLION * 100)
}
def populateCoacs(count: Int) {
println("Creating indexes: " + INDEX_KEYS.mkString(", "))
INDEX_KEYS.map(key => collection.ensureIndex(MongoDBObject(key -> 1)))
println("Adding " + count + " records …Run Code Online (Sandbox Code Playgroud) .net ×2
java ×2
jmeter ×2
load-testing ×2
performance ×2
testing ×2
c# ×1
chromium ×1
clr ×1
javascript ×1
junit ×1
keras ×1
mongodb ×1
nosql ×1
python ×1
regex ×1
scala ×1
tensorflow ×1
try-catch ×1
v8 ×1