相关疑难解决方法(0)

为什么在C++中读取stdin的行比Python要慢得多?

我想比较使用Python和C++从stdin读取字符串的读取行,并且看到我的C++代码运行速度比等效的Python代码慢一个数量级,这让我很震惊.由于我的C++生锈了,我还不是专家Pythonista,请告诉我,如果我做错了什么或者我是否误解了什么.


(TLDR回答:包括声明:cin.sync_with_stdio(false)或者只是fgets改用.

TLDR结果:一直向下滚动到我的问题的底部并查看表格.)


C++代码:

#include <iostream>
#include <time.h>

using namespace std;

int main() {
    string input_line;
    long line_count = 0;
    time_t start = time(NULL);
    int sec;
    int lps;

    while (cin) {
        getline(cin, input_line);
        if (!cin.eof())
            line_count++;
    };

    sec = (int) time(NULL) - start;
    cerr << "Read " << line_count << " lines in " << sec << " seconds.";
    if (sec > 0) {
        lps = line_count / sec;
        cerr << " LPS: " << lps …
Run Code Online (Sandbox Code Playgroud)

c++ python benchmarking iostream getline

1738
推荐指数
10
解决办法
25万
查看次数

使用Python获取文件的最后n行,类似于tail

我正在为Web应用程序编写一个日志文件查看器,为此我想通过日志文件的行分页.文件中的项目是基于行的,底部是最新项目.

所以我需要一种tail()方法,可以n从底部读取行并支持偏移量.我想出的是这样的:

def tail(f, n, offset=0):
    """Reads a n lines from f with an offset of offset lines."""
    avg_line_length = 74
    to_read = n + offset
    while 1:
        try:
            f.seek(-(avg_line_length * to_read), 2)
        except IOError:
            # woops.  apparently file is smaller than what we want
            # to step back, go to the beginning instead
            f.seek(0)
        pos = f.tell()
        lines = f.read().splitlines()
        if len(lines) >= to_read or pos == 0:
            return lines[-to_read:offset and -offset or None]
        avg_line_length …
Run Code Online (Sandbox Code Playgroud)

python file-io file tail logfiles

174
推荐指数
10
解决办法
14万
查看次数

一个很好的Java数据库日志追加器?

在我的工作场所,我们编写了一个自定义log4j appender,它将日志消息写入数据库(异步使用专用线程,因此没有性能损失).我更喜欢写入日志文件 - 基于数据库的日志更容易查询和分析.

是否有一个开源解决方案来执行此操作(特别是对于log4j或任何其他java记录器)?

我们的appender有一些东西,我希望在另一种方法中看到:

  • 记录异常(呃!)
  • 数据库写入来自单独的线程/池

我们的appender支持以下列,我希望在我们找到的任何解决方案中看到所有这些列.

  • LOGID
  • 时间
  • 信息
  • 堆栈跟踪
  • 进程ID
  • 线程ID
  • 机器名称
  • 零件
  • 等级(调试/信息/警告/ ...)
  • ThreadName

java logging log4j

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

如何在文本文件上执行二进制搜索以在python中搜索关键字?

文本文件包含两列 - 索引号(5个空格)和字符(30个空格).它按字典顺序排列.我想执行二进制搜索来搜索关键字.

python binary search text-files

7
推荐指数
3
解决办法
4922
查看次数

标签 统计

python ×3

benchmarking ×1

binary ×1

c++ ×1

file ×1

file-io ×1

getline ×1

iostream ×1

java ×1

log4j ×1

logfiles ×1

logging ×1

search ×1

tail ×1

text-files ×1