javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

性能-python日志记录会刷新每个日志吗?

当我使用标准模块日志记录将日志写入文件时,是否将每个日志分别刷新到磁盘?例如,下面的代码将刷新10次吗?

logging.basicConfig(level=logging.DEBUG, filename='debug.log')
    for i in xrange(10):
        logging.debug("test")

如果是这样,它会变慢吗?

trans by 2020-01-17T20:18:55Z

javascript-如何提高Angular2应用程序的加载性能?

Angular2应用程序加载缓慢,如何提高加载性能?

我使用Angular2,带有html5的打字稿。

目前,我的应用需要4秒钟才能加载。我托管Firebase并使用cloudflare。

我正在做的事情/信息:

  • 我已压缩图像。
  • 我缩小CSS
  • 我缩小js。
  • 我在脚本上使用异步。
  • 我的剧本在我的。
  • 脚本大约700kb
  • 我用谷歌速度测试,并得到65%
  • 我使用了我使用的库的缩小版本 引导程序等
  • 使用systemjs。
  • 这是使用以下程序的种子应用程序即时消息:[https://github.com/mgechev/angular-seed]

流:

当应用程序加载时,它会显示蓝屏(这是引导CSS),然后4秒钟后,应用程序加载并运行得非常快。 但是加载需要4秒钟。 似乎systemjs缩小到的app.js文件正在减慢整个应用程序的速度,并且显示速度不够快。

这是我的网站速度测试:[https://www.webpagetest.org/result/161206_F5_N87/]

这是我的网站:

[https://thepoolcover.co.uk/]

如果您需要有关我的应用程序以及我可以做的其他任何事情的更多信息,请告诉我。

trans by 2020-01-17T06:01:20Z

性能-在Javascript中,即使从不抛出异常,使用try-catch块是否昂贵?

当没有任何异常抛出时,使用多个try-catch块是否“缓慢”? 我的问题与这一问题相同,只是针对Javascript。

假设我有20个函数,其中包含try-catch块。 另一个函数调用这20个函数中的每一个。 他们都不会抛出异常。 由于有try-catch块,我的代码执行速度会变慢还是变差?

trans by 2020-01-15T22:29:56Z

c ++-不相交的线段同时最小化累积长度

我想找到一种更好的算法来解决以下问题:

二维中有N个起点(紫色)和N个目标点(绿色)。 我想要一种算法,该算法通过线段(棕色)将起点连接到目标点,而这些线段中的任何一条都不相交(红色),同时使所有线段的累积长度最小。

我在C ++中的第一个工作是排列所有可能的状态,找到无交集的状态,以及其中那些具有最小总段长O(n!)的状态。 但是我认为必须有更好的方法。

enter image description here

任何想法? 还是搜索的好关键字?

trans by 2020-01-15T17:36:09Z

xcode-如何通过仪器分析内存使用情况和性能?

在所有的仪器跟踪模板中,我喜欢使用:

  • 僵尸程序可以检测对象在哪里被过度释放,非常适合调试UITableView错误。
  • 泄漏以检测内存泄漏。
  • 核心动画带有颜色混合层,可检测帧频和半透明子视图,非常适合平滑UITableView滚动。

我总是听到有人说要分析我的应用程序的内存使用情况和性能。

  1. 为什么要分析内存使用情况和性能? 我的应用运行正常。
  2. 我该怎么做?

我使用过“分配”功能,看到我的iPhone应用程序从分配的总内存开始为1 MB,在正常使用后增长到5 MB。 iPhone上的内存使用量太大了吗? iPad? 苹果电脑?

trans by 2020-01-15T14:06:52Z

性能-为什么在编辑xml文件或更改设计时Android Studio会变慢?

我有一台具有Intel i7和8gb ram和2gb图形的Hp羡慕笔记本,当我使用xml或设计应用程序时,有时android studio仍然卡住了。 我的笔记本电脑或android studio有什么问题吗?

trans by 2020-01-15T00:30:43Z

性能-Backbone说,React-Redux应用程序真的可以扩展吗? 即使重新选择。 在手机上

在Redux中,对存储的每次更改都会在所有连接的组件上触发notify。 这使开发人员的工作变得非常简单,但是如果您的应用程序具有N个连接的组件,并且N非常大,该怎么办?

商店的每次更改(即使与组件无关)仍会在商店的2702477354374530030050ed路径上运行notify,并进行简单的_.debounce测试。 很快,对吧? 当然,也许一次。 但是N次,每次改变吗? 设计上的这一根本性变化使我质疑Redux的真正可扩展性。

作为进一步的优化,可以使用_.debounce分批处理所有notify调用。即使如此,对每个商店更改进行N ===测试并处理其他逻辑(例如视图逻辑),似乎是一种解决方法。

我正在开发一个拥有数百万用户的健康与健身社交移动网络混合应用程序,并且正在从Backbone过渡到Redux。 在此应用程序中,向用户显示了可滑动界面,该界面使他们可以在类似于Snapchat的不同视图堆栈之间导航,但每个堆栈都具有无限深度。 在最流行的视图类型中,无限滚动器可以高效地处理提要项(如帖子)的加载,渲染,附加和分离。 对于一个敬业的用户来说,滚动浏览成百上千的帖子,然后输入一个用户的供稿,然后输入另一个用户的供稿,等等并不罕见。即使进行了大量的优化,连接的组件也会变得非常庞大。

现在,另一方面,Backbone的设计允许每个视图精确地听取影响它的模型,从而将N减小为常数。

我是否缺少某些东西,还是Redux在大型应用程序方面存在根本缺陷?

trans by 2020-01-14T16:05:32Z

为什么variable1 + = variable2比variable1 = variable1 + variable2快得多?

我继承了一些Python代码,这些代码用于创建巨大的表(最多19列,每行5000行)。 花了九秒钟时间在屏幕上绘制了表格。 我注意到每一行都是使用以下代码添加的:

sTable = sTable + '\n' + GetRow()

其中sTable是字符串。

我将其更改为:

sTable += '\n' + GetRow()

我注意到桌子现在出现了六秒钟。

然后我将其更改为:

sTable += '\n%s' % GetRow()

基于这些Python性能提示(仍为6秒)。

由于调用了大约5000次,因此突出了性能问题。 但是为什么会有如此大的差异呢? 为什么编译器没有在第一个版本中发现问题并对其进行优化?

trans by 2020-01-13T19:55:52Z

为什么`for`循环这么快才能计算True值?

我最近在一个姐妹网站上回答了一个问题,该问题要求一个功能来计算数字的所有偶数位。 其他答案之一包含两个功能(到目前为止是最快的):

def count_even_digits_spyr03_for(n):
    count = 0
    for c in str(n):
        if c in "02468":
            count += 1
    return count

def count_even_digits_spyr03_sum(n):
    return sum(c in "02468" for c in str(n))

另外,我还研究了使用列表理解和for

def count_even_digits_spyr03_list(n):
    return [c in "02468" for c in str(n)].count(True)

前两个功能基本相同,除了第一个功能使用显式计数循环,而第二个功能使用内置的for。我希望第二个功能更快(基于此答案),并且 如果要进行审查,我会建议将前者变成。 但是,事实证明是相反的。 用一些数字递增的随机数对其进行测试(因此,任意一位数字的偶数概率约为50%),我得到以下计时:

enter image description here

为什么手动for循环如此之快? 这几乎比使用for快两倍。而且由于内置的str(n)应该比手动对列表求和(根据链接的答案)快大约五倍,这意味着实际上快十倍! 是否因为只需要将一半的值添加到计数器中而节省了成本,因为另一半被丢弃了,足以说明这种差异?


使用for作为过滤器,如下所示:

def count_even_digits_spyr03_sum2(n):
    return sum(1 for c in str(n) if c in "02468")

仅将计时提高到与列表理解相同的水平。


当将时序扩展为更大的数字并归一化为for循环时序时,它们渐近收敛于非常大的数字(> 10k位),这可能是由于str(n)花费的时间:

enter image description here

trans by 2020-01-13T18:17:06Z

.net-如何在C#中处理非规范化的浮点数?

只需阅读这篇引人入胜的文章,了解具有非标准浮点数(浮点数非常接近0)的Intel CPU可能出现的20x-200x减速。

SSE有一个选项可以将这些值四舍五入为0,遇到这种浮点值时可以恢复性能。

C#应用程序如何处理此问题? 有启用/禁用_MM_FLUSH_ZERO的选项吗?

trans by 2020-01-13T08:32:39Z

性能-Mongodb Aggregation框架是否比map / reduce更快?

mongodb 2.2中引入了聚合框架吗,在map / reduce上是否有任何特殊的性能改进?

如果是,为什么,如何以及多少?

(我已经为自己做了一个测试,性能几乎相同)

trans by 2020-01-12T06:08:55Z

性能-Java的System.arraycopy()对小型数组有效吗?

Java System.arraycopy()是对小型数组有效吗,还是它是本机方法这一事实使它实际上比简单的循环和函数调用要低得多?

本机方法是否会导致跨某种Java系统桥的额外性能开销?

trans by 2020-01-12T02:19:55Z

java-进行JNI调用的定量开销是多少?

仅基于性能,大约有多少行“简单”的java等效于进行JNI调用会降低性能?

或者尝试以更具体的方式表达问题,例如简单的java操作

someIntVar1 = someIntVar2 + someIntVar3;

被赋予1的“ CPU工作”索引,进行JNI调用的开销的典型(大致)“ CPU工作”索引是什么?


这个问题忽略了等待本机代码执行所花费的时间。 用电话的话来说,严格来说是关于呼叫的“标志下降”部分,而不是“呼叫速率”。


提出此问题的原因是,当您知道给定操作的本机成本(来自直接测试)和Java成本时,就有一条“经验法则”可以知道何时需要尝试对JNI调用进行编码。 它可以帮助您快速避免编写JNI调用的麻烦,仅是发现标注开销消耗了使用本机代码的任何好处。

编辑:

有些人开始迷恋CPU,RAM等的变化。这些问题实际上与问题无关-我要问的是Java代码行的相对成本。 如果CPU和RAM较差,则Java和JNI均较差,因此应兼顾环境因素。 JVM版本也属于“无关”类别。

这个问题不是要以纳秒为单位的绝对计时,而是以“简单的Java代码行”为单位的停工“工作量”。

trans by 2020-01-12T00:54:41Z

python-为什么线性读混排写入不比随机读线性写入快?

我目前正在尝试更好地了解与内存/缓存相关的性能问题。 我在某处读到,内存局部性对于读取比对写入更重要,因为在前一种情况下,CPU必须实际等待数据,而在后一种情况下,CPU可以将它们运送出去而忽略它们。

考虑到这一点,我进行了以下快速测试:我编写了一个脚本,该脚本创建了一个由N个随机浮点数和排列组成的数组,即一个以随机顺序包含数字0到N-1的数组。 然后,它反复进行以下操作:(1)线性读取数据数组,然后按排列给定的随机访问模式将其写回到新数组,或者(2)按排列顺序读取数据数组,然后将其线性写入新数组。

令我惊讶的是,(2)似乎始终比(1)快。 但是,我的脚本有问题

  • 该脚本是用python / numpy编写的。 这是一种高级语言,目前尚不清楚如何精确地实现读/写。
  • 我可能没有适当地平衡这两种情况。

另外,下面的一些答案/评论表明我的最初期望不正确,并且根据cpu缓存的详细信息,这两种情况可能会更快。

我的问题是:

  • 两者中的哪一个(如果有)应该更快?
  • 这里相关的缓存概念是什么? 它们如何影响结果

初学者友好的解释将不胜感激。 任何支持的代码都应该在C / cython / numpy / numba或python中。

可选地:

  • 解释为什么绝对持续时间在问题规模上是非线性的(请参见下面的时序)。
  • 解释我明显不足的python实验的行为。

作为参考,我的平台是d = np.arange(N)。Python版本是3.6.5。

这是我写的代码:

import numpy as np
from timeit import timeit

def setup():
    global a, b, c
    a = np.random.permutation(N)
    b = np.random.random(N)
    c = np.empty_like(b)

def fwd():
    c = b[a]

def inv():
    c[a] = b

N = 10_000
setup()

timeit(fwd, number=100_000)
# 1.4942631321027875
timeit(inv, number=100_000)
# 2.531870319042355

N = 100_000
setup()

timeit(fwd, number=10_000)
# 2.4054739447310567
timeit(inv, number=10_000)
# 3.2365565397776663

N = 1_000_000
setup()

timeit(fwd, number=1_000)
# 11.131387163884938
timeit(inv, number=1_000)
# 14.19817715883255

正如@Trilarion和@Yann Vernier指出的那样,我的代码片段未达到适当的平衡,因此我将其替换为

def fwd():
    c[d] = b[a]
    b[d] = c[a]

def inv():
    c[a] = b[d]
    b[a] = c[d]

其中d = np.arange(N)(我将两种方式都进行了混洗,以期减少试用缓存的影响)。 我还用repeat替换了timeit,并将重复次数减少了10倍。

然后我得到

[0.6757169323973358, 0.6705542299896479, 0.6702114241197705]    #fwd
[0.8183442652225494, 0.8382121799513698, 0.8173762648366392]    #inv
[1.0969422250054777, 1.0725746559910476, 1.0892365919426084]    #fwd
[1.0284497970715165, 1.025063106790185, 1.0247828317806125]     #inv
[3.073981977067888, 3.077839042060077, 3.072118630632758]       #fwd
[3.2967213969677687, 3.2996009718626738, 3.2817375687882304]    #inv

因此,似乎仍然存在差异,但是它更加微妙,现在可以根据问题的大小来选择哪种方式。

trans by 2020-01-12T00:13:48Z

javascript-为什么在数组中向后迭代的速度比向前快

给出以下代码:

var arr = [];

for (var i = 0; i < 10000; ++i)
    arr.push(1);

转发

for (var i = 0; i < arr.length; ++i) {}

向后

for (var i = arr.length - 1; i >= 0; --i) {}

硬编码转发

for (var i = 0; i < 10000; ++i) {}

为什么后退这么快?

这是测试:[http://jsperf.com/array-iteration-direction]

trans by 2020-01-11T05:55:14Z

java-准备好的语句和性能

因此,我不断听到PreparedStatement对性能有好处。

我们有一个Java应用程序,在该应用程序中,我们使用常规的“声明”比使用“ PreparedStatement”更多。 在尝试使用更多PreparedStatement的同时,我试图在客户端和服务器端更全面地了解PreparedStatements的工作方式。

因此,如果我们有一些典型的CRUD操作并在应用程序中重复更新对象,使用PS是否有帮助? 我了解我们每次都必须关闭PS,否则会导致游标泄漏。

那么它对性能有何帮助? 驱动程序是否缓存预编译的语句,并在下次我执行connection.prepareStatement时给我一个副本? 还是数据库服务器有帮助?

我理解有关PreparedStatement的安全性优势的论点,并且赞赏下面强调它的答案。 但是,我真的想让讨论的重点放在PreparedStatement的性能收益上。

更新:当我说更新数据时,实际上是指多次随机调用该方法。 我理解下面提供的答案的优点,该答案要求在循环内重新使用该语句。

    // some code blah blah
    update();

    // some more code blah blah 
    update();

.... 

public void update () throws SQLException{
 try{
      PreparedStatement ps = connection.prepareStatement("some sql");
      ps.setString(1, "foobar1");
      ps.setString(2, "foobar2");
      ps.execute();
 }finally {
     ps.close();

 }

}

没有办法真正重用“ ps” java对象,并且我知道实际的connection.prepareStatement调用非常昂贵。

是什么使我回到了最初的问题。 这个“某些sql” PreparedStatement是否仍在我不了解的情况下进行缓存和重用?

我还应该提到我们支持多个数据库。

提前致谢。

trans by 2020-01-10T23:57:43Z

改善Python中大型字典的性能

我发现如果在开始时初始化一个空字典,然后在for循环中向字典中添加元素(大约110,000个键,每个键的值是一个列表,并且在循环中也在增加),则速度会降低 循环。

我怀疑问题是,字典在初始化时不知道键的数量,并且它做的也不是很聪明,所以也许存储冲突变得很频繁并且变慢了。

如果我知道键的数量以及这些键的确切含义,那么python中有什么方法可以使字典(或哈希表)更有效地工作? 我隐约记得,如果您知道键,则可以巧妙地设计哈希函数(完美的哈希值?)并预先分配空间。

trans by 2020-01-09T21:45:50Z

性能-是否比C#中的浮点数快一倍?

我正在编写一个应用程序,该程序读取大量的浮点数并对其执行一些简单的操作。 我使用的是float,因为我认为它比double更快,但是经过一些研究后,我发现这个主题有些混乱。 有人可以详细说明吗?

trans by 2020-01-08T14:26:12Z

Java 8 lambda和匿名内部类之间的性能差异

在Java 8之前,可以通过使用匿名内部类来实现lambda功能。 例如:

interface Lambda {
    void doStuff();
}

// ...

public void doWithCallback(Lambda callback) {
    // ...
    callback.doStuff();
}

// ...

doWithCallback(new Lambda { 
    public void doStuff() { 
        // ... 
    } 
});

在性能方面,仍然使用这种方法和使用新的Java 8 lambda之间有区别吗?

trans by 2020-01-08T13:06:26Z

数据库-是否可以获取在postgres中进行的查询的历史记录

是否有可能获得在postgres中进行查询的历史记录? 是否有可能获得每个查询所花费的时间? 我目前正在尝试识别正在处理的应用程序中的慢查询。

我正在使用Postgres 8.3.5

trans by 2020-01-08T12:51:53Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共31页