问题列表 - 第16428页

运行速度最快的算法竞赛

我想参加像代码高尔夫比赛这样的比赛,但获胜者将拥有最快的算法,而不是最小的代码.

  • 测量算法速度的一种公平方法是使用中性虚拟机,如Java的JVM.有没有一种简单的方法可以知道执行的JVM指令总数?(如果条目使用多个线程,那么JVM指令的总数将在所有线程中求和.)

例如,代码

public class simple {
    public static int main(String argc[]) {
        int i;

        i = 3;
        while (i > 0) {
            i--;
        }

    return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

生成JVM代码

0:  iconst_3
1:  istore_1
2:  iload_1
3:  ifle    12
6:  iinc    1, -1
9:  goto    2
12: iconst_0
13: ireturn
Run Code Online (Sandbox Code Playgroud)

它需要(如果我已经正确计算)18个JVM指令来运行.

  • 我希望人们能够在家里办理他们的参赛作品,看看评委会看到什么.显然,如果我将输入提供给程序,最快的解决方案是吐出记忆的预先计算的答案.有没有办法客观地让人们在家里运行程序而不是看到回忆的答案?

  • 还有哪些其他问题阻碍了非正式的"最快的代码竞争"的发生?

谢谢!

java algorithm jvm code-golf

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

记忆中的奇数字符

当我运行我的调试器时,我决定检查内存中的特定位置,并注意到有一些奇怪的字符¾㵎䐑톢హ 洓.有谁知道这是什么?

memory debugging

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

为什么Linux程序derefrences(char*)0并不总是段错误?

我正在测试用于检测子进程何时进行segfaulted的代码.想象一下,当这段代码并不总是段错误时,我感到很惊讶:

#include <stdio.h>

int main() {
  char *p = (char *)(unsigned long)0;
  putchar(*p);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在Debian Linux 2.6.26内核下运行; 我的shell是ksh93来自Debian ksh软件包的AT&T ,版本M 93s + 2008-01-31.有时这个程序会出现段错误,但除此之外它只是以非零退出状态静默终止但没有消息.我的信号检测程序报告如下:

segfault terminated by signal 11: Segmentation fault
segfault terminated by signal 53: Real-time signal 19
segfault terminated by signal 11: Segmentation fault
segfault terminated by signal 53: Real-time signal 19
segfault terminated by signal 53: Real-time signal 19
segfault terminated by signal 53: Real-time signal 19
segfault terminated by signal 53: Real-time …
Run Code Online (Sandbox Code Playgroud)

c linux segmentation-fault waitpid

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

使用gcc在另一个程序中编译程序

从命令行我得到文件名,我必须使用gcc编译.让我们这样说吧.

./a.out fileToBeCompiled.c
Run Code Online (Sandbox Code Playgroud)

那我怎么可以在我的程序中使用gcc编译这个文件?让我们说main.c正在制作a.out.

c

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

jQuery可排序列表 - 滚动条在排序时跳转

我创建了一个演示:http://pastebin.me/584b9a86d715c9ba85b7bebf0375e237

当滚动条位于底部并拖动项目以对其进行排序时,会导致滚动条向上跳跃.它似乎在FF,Safari,Chrome和IE(至少IE8)中这样做.

在我的Mac上的Firefox中,当滚动条位于底部时它会跳起来,但也会在整个列表中添加一个漂亮的闪存.它只是在向上滚动整个列表时闪烁.我相信,如果我弄清楚是什么导致向上滚动(如果我可以阻止它),闪烁也将停止.

我不喜欢它跳起来像那样的b/c我发现它很刺耳和混乱.我知道这是一个角落的案例,但如果可以,我想解决它.

那么,有没有办法防止它向上滚动?或者,是什么导致它向上滚动?

谢谢

jquery jquery-ui jquery-ui-sortable

27
推荐指数
5
解决办法
2万
查看次数

没有依赖项的小型RSA或DSA库

是否有一个RSA或DSA的小型库,没有任何依赖,如GMP或OpenSSL?(用C或Asm编写)

c encryption rsa

13
推荐指数
2
解决办法
9712
查看次数

在运行GHCI时,如何将stdin从文件路由到函数

我在XP中的dos命令行使用ghci 6.10.4,在使用haskell-mode-2.4的emacs中也使用ghci 6.10.4

当运行在stdin上运行的程序时,有没有办法可以将文件重定向为stdin?例如,如果我有一个名为main的函数从stdin读取,我不能这样做:

*Main> main < words.txt
Run Code Online (Sandbox Code Playgroud)

还有另外一种方法吗?

另外我希望能够在ghci窗口中键入stdin,这似乎有效,但是EOF键是什么?我认为这是Ctrl-D但是不起作用.

haskell ghci

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

"Microsoft.Jet.OLEDB.4.0"提供程序未在本地计算机上注册

有人可以帮我解决这个错误吗?当我尝试打开与mdb的连接时,我得到"'Microsoft.Jet.OLEDB.4.0'提供程序未在本地计算机上注册"错误.我怎么能纠正这个?

我的代码非常简单:

class ImportTDB {
    private string filename;
    private string connectionString;

    private int collisions = 0;

    public ImportTDB(String filename) {
        this.filename = filename;
        this.connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename;
    }

    public void loadCustomerList() {
        DataTable dt = new DataTable();
        using (OleDbConnection conn = new OleDbConnection(connectionString)) {
            OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Names", conn);
            conn.Open();
            adapter.Fill(dt);
            conn.Close();
        }

        Console.WriteLine(dt.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# oledb

3
推荐指数
2
解决办法
7218
查看次数

内存栅栏如何影响数据的"新鲜度"?

我对以下代码示例有疑问(摘自:http://www.albahari.com/threading/part4.aspx#_NonBlockingSynch)

class Foo
{
   int _answer;
   bool _complete;

   void A()
   {
       _answer = 123;
       Thread.MemoryBarrier();    // Barrier 1
       _complete = true;
       Thread.MemoryBarrier();    // Barrier 2
   }

    void B()
    {
       Thread.MemoryBarrier();    // Barrier 3
       if (_complete)
       {  
          Thread.MemoryBarrier(); // Barrier 4
          Console.WriteLine (_answer);
       }
    }
 }
Run Code Online (Sandbox Code Playgroud)

接下来是以下解释:

"障碍1和障碍4阻止这个例子编写"0".障碍2和3提供了新鲜度保证:他们确保如果B在A之后运行,则读取_complete将评估为真."

我理解如何使用记忆障碍影响指令的记录,但这提到的"新鲜保证"是什么?

在本文后面,还使用了以下示例:

static void Main()
{
    bool complete = false; 
    var t = new Thread (() =>
    {
        bool toggle = false;
        while (!complete) 
        { …
Run Code Online (Sandbox Code Playgroud)

c# c++ multithreading memory-model lock-free

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

Python中的类级别只读属性

有没有办法在Python中创建类级别的只读属性?例如,如果我有课Foo,我想说:

x = Foo.CLASS_PROPERTY
Run Code Online (Sandbox Code Playgroud)

但是阻止任何人说:

Foo.CLASS_PROPERTY = y
Run Code Online (Sandbox Code Playgroud)

编辑: 我喜欢Alex Martelli解决方案的简单性,但不喜欢它需要的语法.他和~ututbu的答案都启发了以下解决方案,这更接近我所寻找的精神:

class const_value (object):
    def __init__(self, value):
        self.__value = value

    def make_property(self):
        return property(lambda cls: self.__value)

class ROType(type):
    def __new__(mcl,classname,bases,classdict):
        class UniqeROType (mcl):
            pass

        for attr, value in classdict.items():
            if isinstance(value, const_value):
                setattr(UniqeROType, attr, value.make_property())
                classdict[attr] = value.make_property()

        return type.__new__(UniqeROType,classname,bases,classdict)

class Foo(object):
    __metaclass__=ROType
    BAR = const_value(1)
    BAZ = 2

class Bit(object):
    __metaclass__=ROType
    BOO = const_value(3)
    BAN = 4
Run Code Online (Sandbox Code Playgroud)

现在,我得到:

Foo.BAR …
Run Code Online (Sandbox Code Playgroud)

python

31
推荐指数
3
解决办法
1万
查看次数