我正在尝试开发一个前端代码,要求用户提供 pdf,然后在内部(在用户浏览器中)生成一个 png 数组(通过数据到 url),其中数组中的每个条目对应于 pdf 中的一个页面:
dat[0] = 第 1 页的 png
dat[1] = 第 2 页的 png
...
当我测试下面的代码时,页面以某种方式呈现在彼此之上并旋转。
<script src="http://cdnjs.cloudflare.com/ajax/libs/processing.js/1.4.1/processing-api.min.js"></script><html>
<!--
Created using jsbin.com
Source can be edited via http://jsbin.com/pdfjs-helloworld-v2/8598/edit
-->
<body>
<canvas id="the-canvas" style="border:1px solid black"></canvas>
<input id='pdf' type='file'/>
<!-- Use latest PDF.js build from Github -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="pdf.js"></script>
<script src="pdf.worker.js"></script>
<script type="text/javascript">
//
// Asynchronous download PDF as an ArrayBuffer
//
dat = [];
var pdf = document.getElementById('pdf');
pdf.onchange = function(ev) {
if …Run Code Online (Sandbox Code Playgroud) 我试图从java中的sql数据库读出一列,我希望结果在数组中返回.这是功能:
public static double[] open(Connection conn,String symbol,int startdate,int enddate) throws SQLException {
int id = database.get_stockid(conn, symbol);
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select price_open from stock_data where stock_id="+id+" and date>="+startdate+" and date<="+enddate+";");
ArrayList<Double> data = new ArrayList<Double>();
while(rs.next()) {
data.add(rs.getDouble("open"));
}
double[] data1 = new double[data.size()];
for(int a = 0; a < data1.length; ++a) {
data1[a]=data.get(a);
}
return data1;
}
Run Code Online (Sandbox Code Playgroud)
这很慢.它使用我的sqlite数据库需要1.5秒.这是读取列的标准方法还是我做错了什么?这是我的应用程序的瓶颈,所以我需要它尽可能快.
编辑:谢谢.我刚刚发现ArrayList没有引起问题.瓶颈必须在于sql部分:如果我加载数据仅10天就需要加载数据10年.所以我必须改进我的SQL,但如何?
这里改进了代码:
public static double[] open(Connection conn,String symbol,int startdate,int enddate) throws SQLException {
int id = database.get_stockid(conn, …Run Code Online (Sandbox Code Playgroud) 我试图从一个应该计算移动平均值的函数返回一个QVector.我的问题是如何使功能更有效.数学很好,我更想知道如果我在返回QVector时做错了什么.这是我到目前为止的代码:
QVector<double> moving_exponential_average(const QVector<double>& a, double lambda) {
if(lambda <0 ) {
lambda = 0;
}
if(lambda >1) {
lambda = 1;
}
QVector<double> b;
b.reserve(a.size());
b.append(a[0]);
double l_inv = 1-lambda;
for(unsigned int i = 1; i < a.size(); ++i) {
b.append(a[i]*lambda+l_inv*b[i-1]);
}
return b;
}
Run Code Online (Sandbox Code Playgroud)
我使用默认构造函数来保持QVector不设置默认值.我尝试调整大小的速度要慢得多.您有什么建议如何优化?
问候
c++ ×1
frontend ×1
java ×1
javascript ×1
optimization ×1
pdf ×1
pdf.js ×1
performance ×1
png ×1
qt ×1
qvector ×1
sql ×1