小编Key*_*mer的帖子

编译器如何优化由密封类实现的虚拟方法

我想知道以下代码是如何优化的.特别涉及虚拟和直接呼叫.我评论过我认为一切都是优化的,但这些只是猜测.

public abstract class Super
{
    public abstract void Foo();

    public void FooUser()
    {
        Foo();
    }
}

public class Child1 : Super
{
    public override void Foo()
    {
        //doSomething
    }
}

public class SealedChild : Super
{
    public override void Foo()
    {
        //doSomething
    }
}

class Program
{
    void main()
    {
        Child1 child1 = new Child1();
        child1.Foo(); //Virtual call?
        child1.FooUser(); //Direct call and then a virtual call. 

        SealedChild sealedChild = new SealedChild();
        sealedChild.Foo(); //Direct call?
        sealedChild.FooUser(); 
        /* Two options: either …
Run Code Online (Sandbox Code Playgroud)

c# optimization virtual abstract sealed

1
推荐指数
2
解决办法
1295
查看次数

将选择查询拆分成块的目的是什么?

编辑:示例很糟糕,导致与问题无关的答案.给定一个大的选择查询,在一个简单的程序,如:

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,    
                                     ResultSet.CONCUR_READ_ONLY);
ResultSet srs = stmt.executeQuery(
    "SELECT AGE FROM USERS");
while (srs.next()) {
        ageStdDevAccumulator += Math.Pow(averageAge - srs.getInt("AGE"),2);
}
int ageStdDev= Math.Sqrt(ageStdDevAccumulator / userCount);
Run Code Online (Sandbox Code Playgroud)

我知道一旦运行了executeQuery,那么整个用户年龄列就会从数据库发送到程序.是对的吗?如果数据库中有太多用户,这是否会导致服务器上的内存溢出?如果是这样,那么可以将选择查询分解为更小的块?如果是这样,有可能让编译器自己解决这个问题吗?

谢谢,一个数据库noob程序员.

sql

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

等待任务并静默停止取消或失败

我想写的是以下内容:

async void Foo()
{
    var result = await GetMyTask().IgnoreCancelAndFailure();
    ProcessResult(result);
}
Run Code Online (Sandbox Code Playgroud)

代替:

void Foo()
{
    GetMyTask().ContinueWith(task => ProcessResult(task.Result),
        TaskContinuationOptions.OnlyOnRanToCompletion);
}
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何实现IgnoreCancelAndFailure方法,它具有以下签名:

//On cancel or failure this task should simply stop and never complete.
Task<T> IgnoreCancelAndFailure<T>(this Task<T> task) 
{
     throw new NotImplementedException(); 
}
Run Code Online (Sandbox Code Playgroud)

如果可能,我应该如何实现IgnoreCancelAndFailure?

.net c# task

-2
推荐指数
1
解决办法
788
查看次数

标签 统计

c# ×2

.net ×1

abstract ×1

optimization ×1

sealed ×1

sql ×1

task ×1

virtual ×1