【问题标题】:SAS: generate abstractly long and large datasetSAS:生成抽象的长而大的数据集
【发布时间】:2014-09-25 16:01:17
【问题描述】:

尝试做一些性能测试 我想不出一个宏

%generate(n_rows,n_cols);

这将生成一个包含 n_rows 和 n_cols 的表,其中填充了随机数/字符串 我尝试使用此链接: http://bi-notes.com/2012/08/benchmark-io-performance/

但是我很快就遇到了内存问题

谢谢!

【问题讨论】:

  • 请提供您目前拥有的代码。你想生产多大的桌子?您当前运行 SAS 的机器的硬件规格是什么? SAS 已配置使用多少内存?
  • 它们需要有多随机?真正的随机值,或者只是您不关心它们是什么并且不希望它们都一样?
  • 一切都可以。

标签: sas performance-testing


【解决方案1】:

试试这个。我添加了 2 个输入参数。所以现在你有许多数字和许多字符。还可以定义输出数据集名称。

%macro generate(n_rows,n_num_cols,n_char_cols,outdata=test,seed=0);
data &outdata;
array nums[&n_num_cols];
array chars[&n_char_cols] $;
temp = "abcdefghijklmnopqrstuvwxyz";
do i=1 to &n_rows;
    do j=1 to &n_num_cols;
        nums[j] = ranuni(&seed);
    end;
    do j=1 to &n_char_cols;
        chars[j] = substr(temp,ceil(ranuni(&seed)*18),8);
    end;
    output;
end;
drop i j temp;
run;

%mend;

%generate(10,10,10,outdata=test);

【讨论】:

  • 您可以跳过一个步骤并为字符执行chars[j] = put(ranuni(0), best.)
  • 谢谢!嘿,快速的问题。如何防止企业指南将结果加载到输出数据窗口中,以便我的计算机在创建数据集后不会挂起?
  • 这是结果下的一个选项(生成时自动打开数据或结果)。您还可以将要链接的最大数据集数更改为零。
  • 我会添加一个种子(和一个种子参数),这样您就可以重新创建相同的数据集 - 取决于您为性能检查所做的工作,拥有相同的随机数据集可能会有所帮助。
猜你喜欢
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
相关资源
最近更新 更多