小编Sam*_*adt的帖子

如何在程序中找到符号来查找符号

使用时perf report,我没有看到我的程序的任何符号,而是我得到这样的输出:

$ perf record /path/to/racket ints.rkt 10000
$ perf report --stdio

# Overhead   Command      Shared Object  Symbol
# ........  ........  .................  ......
#
    70.06%  ints.rkt  [unknown]          [.] 0x5f99b8        
    26.28%  ints.rkt  [kernel.kallsyms]  [k] 0xffffffff8103d0ca
     3.66%  ints.rkt  perf-32046.map     [.] 0x7f1d9be46650  
Run Code Online (Sandbox Code Playgroud)

这是相当缺乏信息的.

相关程序使用调试符号构建,sysprof工具显示相应的符号,Zoom也是如此,我认为它是perf在引擎盖下使用的.

请注意,这是在x86-64上,因此二进制文件是使用编译的-fomit-frame-pointer,但在其他工具下运行时也是这种情况.

linux performance perf

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

Racket Interactive与编译性能

我是否编译一个Racket程序似乎对运行时性能没有任何影响.

最初是通过编译改进了文件的加载吗?换句话说,运行时racket src.rkt是否正在进行jit编译,这就是为什么我认为编译与交互没有区别?

即使对于整数运算的紧密循环,我认为会发生一些差异,无论我以前是否做过,配置文件时间都相等raco make.

我错过了一些简单的事吗?

PS,我注意到我可以对源文件(.rkt)或.zo文件运行racket .球拍是否会自动使用.zo找到与.rkt文件对应的if ,或者是否.zo需要明确使用该文件?无论哪种方式,它对我所看到的性能数字没有任何影响.

racket

22
推荐指数
2
解决办法
4101
查看次数

如何将列表作为参数列表传递给球拍?

我有这样的声明:

 ((lambda (a b c) (+ a b c)) 1 2 3) ; Gives 6
Run Code Online (Sandbox Code Playgroud)

我希望能够将列表传递给它:

((lambda (a b c) (+ a b c)) (list 1 2 3))
Run Code Online (Sandbox Code Playgroud)

...除了这不起作用,因为整个列表作为'a'传递.有没有办法将列表分解为参数?

我正在寻找的东西类似于Python中的*字符.对于那些不熟悉语法的人:

 def sumthree(a, b, c):
   print a + b + c

 sumthree(1, 2, 3) # Prints 6
 sumthree(*(1, 2, 3)) # Also prints 6
Run Code Online (Sandbox Code Playgroud)

parameters scheme list racket

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

我需要帮助安装PLT Racket,我将Racket文件夹移动到应用程序但我不知道如何在终端中使用raco命令

为了解释,我有OSX,我想安装PLT球拍.我不知道如何使用raco命令在终端中运行.rkt文件,而不是使用Dr. Racket解释器.我真的不喜欢DrRacket文本编辑器.

我在哪里放bin,lib和其他文件夹?我似乎无法在Racket bin中的所有或任何其他命令上访问raco命令.

racket

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

试图从Racket中的字符串创建日期 - find-seconds非常慢,每周工作日需要?

我正在尝试从Racket中的大型csv文件中解析日期.

最直接的方法是创建一个新date结构.但它需要week-dayyear-day参数.当然我没有这些,这似乎date是我不理解的模块的真正弱点.

因此,作为替代方案,我决定使用find-seconds将原始日期值转换为秒,然后将其传递给seconds->date.这有效,但是非常慢.

(time
 (let loop ([n 10000])
   (apply find-seconds '(0 0 12 1 1 2012)) ; this takes 3 seconds for 10000
   ;(date 0 0 12 1 1 2012 0 0 #f 0) ; this is instant
   (if (zero? n)
       'done
       (loop (sub1 n)))))
Run Code Online (Sandbox Code Playgroud)

find-seconds需要3秒才能完成10000个值,我有几百万个.创建date结构当然是即时的,但我没有周日,年日值.

我的问题是:

1.)为什么week-day/ year-day需要创建日期结构?

2.)find-seconds应该是这么慢(即bug)?或者我做错了什么?

3.)是否有任何替代方法可以快速解析日期.我知道srfi/19有一个string->date功能,但我必须改变一切以使用该模块的结构而不是球拍的内置结构.并且它可能遭受同样的性能命中,我不确定.

datetime racket

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

在Racket中对列表进行分区

在我正在Racket中工作的应用程序中,我需要获取一个数字列表并将列表分成连续数字的子列表:(在实际应用中,我实际上是分区对由数字和一些数据组成的对,但原则是一样的.)

即如果我的程序被调用,chunkify那么:

(chunkify '(1 2 3  5 6 7  9 10 11)) -> '((1 2 3) (5 6 7) (9 10 11))  
(chunkify '(1 2 3)) ->  '((1 2 3))  
(chunkify '(1  3 4 5  7  9 10 11 13)) -> '((1) (3 4 5) (7) (9 10 11) (13))  
(chunkify '(1)) -> '((1))  
(chunkify '()) -> '(())  
Run Code Online (Sandbox Code Playgroud)

等等

我在Racket中提出了以下内容:

#lang racket  
(define (chunkify lst)  
  (call-with-values   
   (lambda ()  
     (for/fold ([chunk '()] [tail '()]) ([cell  (reverse lst)])  
       (cond  
         [(empty? …
Run Code Online (Sandbox Code Playgroud)

scheme racket

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

如何在DrRacket中运行Metacircular Evaluator

我试图运行(http://mitpress.mit.edu/sicp/full-text/book/book-ZH-26.html)在SICP 4.1中所述的程序,但已经在重新定义函数碰到一些困难,apply如这本书暗示你这样做.代码如下:

 #lang planet neil/sicp

;; -----------------------------------------------------------------------------
;; 4.1.1 The Core of the Evaluator
;; -----------------------------------------------------------------------------

;; Eval
(define apply-in-underlying-scheme apply)
(define (eval exp env)
  (display 'eval)
  (newline)
  (display exp)
  (newline)
  (cond ((self-evaluating? exp) exp)
        ((variable? exp) (let ((res (lookup-variable-value exp env)))
                           (display (list 'lookup exp))
                           (newline)
                           (display res)
                           (newline)
                           res))
        ((quoted? exp) (text-of-quotation exp))
        ((assignment? exp) (eval-assignment exp env))
        ((definition? exp) (eval-definition exp env))
        ((if? exp) (eval-if exp env))
        ((lambda? exp)
         (make-procedure (lambda-parameters exp)
                         (lambda-body exp)
                         env)) …
Run Code Online (Sandbox Code Playgroud)

lisp scheme racket

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

什么构成DrRacket编程语言的核心

什么构成了Racket编程语言的核心?核心基于任何RnRS规范与所有附加功能,例如基于该微小核心的众多序列方法,还是语言核心参考部分中的所有内容?

scheme racket

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

通过HTTP API将图像发布到Gists

是否可以通过HTTP API将二进制文件(如图像)发布到GitHub gists?

特别是,Gist api文档描述了如何使用字符串内容发布文件.上传图片有两个问题.一个是api对POST请求有64kb的限制(尽管没有记录),这对于图像文件来说非常小.其次,对于图像文件的线路应该使用什么编码并不明显.

通过克隆与Gist相关联的git存储库,添加文件并推送到存储库,这很容易做到这一点,但这需要git,我想在没有安装git的系统上使这个工作.

github github-api

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

将r5rs文件包含在球拍中的另一个文件中

我的一门课程是将DrRacket用于SICP的某些部分.我们正在研究metacircular评估员,我有一个R5RS代码文件(set-car!set-cdr!),我需要与我的工作一起使用.因为R5RS文件大约是500行,所以我更喜欢将它保存在单独的缓冲区中.如何将其包含在我的答案缓冲区的定义中?这似乎racket/include需要#lang racket,但set-car!set-cdr!没有在该语言.

scheme sicp racket

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

标签 统计

racket ×8

scheme ×5

datetime ×1

github ×1

github-api ×1

linux ×1

lisp ×1

list ×1

parameters ×1

perf ×1

performance ×1

sicp ×1