标签: profiling

SQL数据库专家:这是一个瓶颈吗?

我说不,伙伴说是的.我们都很固执.我们将测试,但我需要一些弹药来支持我的情况,即下面的伪代码不是那么大的瓶颈.我们正在做的是运行两个查询.第一个是针对一个大表(100k记录),下面称为BigTable.然后,我们采取我们发现的(通常是30个左右的记录)并运行这些记录(在一个循环中,参见下面的第二个'foreach')对一个名为SmallTable的小得多的表,通常有大约200条记录.我的合作伙伴希望将在SmallTable中找到的记录组合在一起,以便它们出现在BigTable的记录中,但如果这样做,则会失去灵活性,数据库不再处于正常状态.我的伴侣说他不关心普通形式,并声称以下是瓶颈.帮助我赢得这场战斗!当然,我的后备位置将是"让我们测试并看到",但我现在可以使用一些火力.我们期望每秒10个请求(在这种情况下可能是瓶颈,如果有的话,是微不足道的)或高达1500秒(这可能会破坏我们的应用程序在其他地方!大声笑.但我们是乐观主义者).

平台:Microsoft SQL Server 2008,使用以C#和Linq-to-Entities(EF)编写的Web服务,在远程服务器上运行,我们不拥有,但由GoDaddy等服务器公司在'Per Call'上运行/无国籍基础.在SQL Server中设置为默认值的所有内容(例如,Max Pooling = 100,Load Balance Timeout = 0,Pooling = True).我没有进行任何缓存,因为我已经读过缓存不适用于分布式数据库的地方,我认为这是服务器公司使用的.

我很感激.这是伪代码:

Public  string MyWebMethod()
{

List<Record> myrecords = new List<Records>();

try  //try block 1
{
using (AEntityFramework context = new AEntityFramework())
{
var RecordsReturned =   (from x in context.BigTable
                            //some conditions deleted
            select x);

//do some stuff with these records, typically 30 records returned from BigTable, which has 10000 to 100000 records total

foreach (Record r in RecordsReturned)
{  myrecords.Add(r);} //add these records to …
Run Code Online (Sandbox Code Playgroud)

sql profiling sql-server-2008

0
推荐指数
1
解决办法
325
查看次数

我完全从内存(没有IO)运行算法,但我的CPU使用率低于25%.可能存在的瓶颈是什么?

我一直在运行着名的旅行商问题的单线程暴力版本,而YourKit正在向我指出CPU最多使用25%的事实.

这个事实背后的原因是什么?我们被告知这些算法是高度CPU密集型的,但在这种情况下似乎有很多浪费的CPU.

我的理论是瓶颈必须是RAM访问.锁定问题似乎是不可能的,因为我运行的算法是单线程的.

我对吗?

java performance profiling yourkit

0
推荐指数
1
解决办法
226
查看次数

Python列表pop()比列表[1:]慢得多

我最近写了一个快速而肮脏的BFS实现,在有向图中找到钻石.BFS循环看起来像这样:

while toVisit:
    y = toVisit.pop()
    if y in visited: return "Found diamond"
    visited.add(y)
    toVisit.extend(G[y])
Run Code Online (Sandbox Code Playgroud)

(G是图表 - 从节点名称到其邻居列表的字典)

然后是有趣的部分:我认为这list.pop()可能太慢了,所以我运行了一个分析器来比较这个实现的速度和deque.pop - 并得到了一点改进.然后我对它进行了比较y = toVisit[0]; toVisit = toVisit[1:],令我惊讶的是,最后一次实现实际上是最快的.

这有意义吗?是否有任何性能原因可以使用list.pop()而不是显然更快的双线程?

python performance profiling

0
推荐指数
1
解决办法
7704
查看次数

如何确定大对象的性能开销(用C++编写)

我正在研究一个对对象进行大量操作的程序; 创建,删除,动态展开它们,在指针之间移动,比较内容等.这些对象中的大多数至少是40个字节(最多约90个字节),并且一次可能在内存中有超过10,000个.

我想确定的是我是否应该费心去减小尺寸.我可以分析构造函数,新的,删除等.但是,我认为大型对象最重要的性能来自缓存不友好.有没有办法确定对象大小对发生的缓存未命中数的贡献?

PS:我想过度使用dynamic_cast也会影响性能.然而,这更容易诊断.

编辑:我知道在不进行分析的情况下进行优化是没用的.我要问的是如何从分析中确定是否存在问题.是否有可能在整个代码中分配惩罚,以便标准分析工具不会有用?

c++ performance profiling

0
推荐指数
1
解决办法
177
查看次数

如何在CUDA中测量流式多处理器的使用/空闲时间?

一个简单的问题,确实:我有一个内核,它可以运行每个Streaming Multiprocessor(SM)的最大块数,并且想知道我理论上可以从中提取多少性能.理想情况下,我想知道空闲的SM周期的百分比,即所有warp在内存访问时被阻止.

我真的只是想找到这个号码.我想要的是

  • 增加入住率的一般提示.我正在使用我可以获得的所有占用,即使我设法获得更多性能,它也不会告诉我理论上可能有多少.
  • 如何计算GFlops的理论峰值.我的计算不是以FP为中心的,还有很多整数运算和逻辑.

profiling cuda multiprocessor

0
推荐指数
1
解决办法
1411
查看次数

用于java执行路径分析的工具

在确定各种错误修复的影响的同时,我经常发现自己试图找到通过代码库的所有路由,这些路由最终会出现在我更改的代码中.这是一个繁琐的手动过程,涉及在Eclipse中单击方法名称并搜索"引用...",同时在记事本中绘制调用的树形结构.

似乎应该是可自动化的,但每当我搜索这样的工具时,我都找不到这样的东西.似乎有工具可以分析代码中的错误,竞争条件等(例如FindBugs,PMD,Checkstyle),但没有任何东西会简单地通过代码输出潜在的路线.我很可能没有使用正确的搜索词.

这样的工具是否存在于Java或者我忽略了为什么这不可能的关键原因?

java profiling

0
推荐指数
1
解决办法
1207
查看次数

在OutOfMemoryException之前不久转储Java堆?

可能重复:
Java VisualVM在OOME上启用堆转储

我有一个因OOME而崩溃的应用程序.我想在App崩溃之前不久创建堆的转储文件.jdump之前我用过几个小时的运行时来分析堆,但没有发现任何可疑之处.我可以在一些Eclipse分析器中运行该应用程序.在使用普通(或jdk)安装的服务器上抛出OOME之前不久,是否有某种方法可以创建堆转储?

java heap profiling out-of-memory

0
推荐指数
1
解决办法
241
查看次数

如果秒表的持续时间不同,秒表的价值有多大?

我不是在谈论吸血蜘蛛般的疾病传播者,而是我在这里记录的那种滴答:

Stopwatch noLyme = new Stopwatch();
noLyme.Start();
. . .
noLyme.Stop();
MessageBox.Show(string.Format(
   "elapsed milliseconds == {0}, elapsed ticks == {1}", 
   noLyme.ElapsedMilliseconds, noLyme.ElapsedTicks));
Run Code Online (Sandbox Code Playgroud)

消息框显示的是17357毫秒和56411802滴答; 这相当于每毫秒3250.089416373797个刻度,或每秒约325万个刻度.

由于比率是如此奇怪(3250.089416373797:1),我假设刻度的时间长度根据使用的硬件或其他因素而变化.既然如此,实际使用的是滴答计数?对我来说,似乎毫秒有更多的价值.IOW:为什么我会关心滴答声(可变时间片)?

c# profiling timing stopwatch

0
推荐指数
1
解决办法
105
查看次数

RandomAccessBuffer的性能改进

我使用pdf库将PDF转换为图像.这个过程需要很多时间,我用一个分析器找到问题的原因,并且一切都降低了(> 60%CPU时间)一种方法.现在我的问题是:

这种方法可以进一步改进吗?

public int read(byte[] b) throws IOException {

    if (buf==null) throw new IOException("Data buffer not initialized.");

    if (pointer<0 || pointer>=length)
        return -1;

    int length=this.length-(int)pointer;
    if(length>b.length)
            length=b.length;

    for (int i=0; i<length; i++) {
        buf.seek(pointer++);
        b[i] = buf.readByte();
    }
    return length;
}
Run Code Online (Sandbox Code Playgroud)

java algorithm optimization performance profiling

0
推荐指数
1
解决办法
82
查看次数

如何检查R中的一大块代码所花费的时间

我想检查一段代码所花费的时间.有没有办法做到这一点.我想知道所有的时间,比如(user, system, and elapsed)我的代码的一小部分时间.说我的代码有不同的部分

code 1...... ........... ...........

code2......... ............... ...............

所以我想要时间code 1.谢谢

profiling r

0
推荐指数
2
解决办法
460
查看次数